File: git-bulk.html

package info (click to toggle)
git-extras 7.4.0-1
  • links: PTS
  • area: main
  • in suites: forky, sid
  • size: 2,120 kB
  • sloc: sh: 4,312; python: 994; makefile: 146
file content (225 lines) | stat: -rw-r--r-- 7,710 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
<!DOCTYPE html>
<html>
<head>
  <meta http-equiv='content-type' content='text/html;charset=utf8'>
  <meta name='generator' content='Ronn-NG/v0.9.1 (http://github.com/apjanke/ronn-ng/tree/0.9.1)'>
  <title>git-bulk(1) - Run git commands on multiple repositories</title>
  <style type='text/css' media='all'>
  /* style: man */
  body#manpage {margin:0}
  .mp {max-width:100ex;padding:0 9ex 1ex 4ex}
  .mp p,.mp pre,.mp ul,.mp ol,.mp dl {margin:0 0 20px 0}
  .mp h2 {margin:10px 0 0 0}
  .mp > p,.mp > pre,.mp > ul,.mp > ol,.mp > dl {margin-left:8ex}
  .mp h3 {margin:0 0 0 4ex}
  .mp dt {margin:0;clear:left}
  .mp dt.flush {float:left;width:8ex}
  .mp dd {margin:0 0 0 9ex}
  .mp h1,.mp h2,.mp h3,.mp h4 {clear:left}
  .mp pre {margin-bottom:20px}
  .mp pre+h2,.mp pre+h3 {margin-top:22px}
  .mp h2+pre,.mp h3+pre {margin-top:5px}
  .mp img {display:block;margin:auto}
  .mp h1.man-title {display:none}
  .mp,.mp code,.mp pre,.mp tt,.mp kbd,.mp samp,.mp h3,.mp h4 {font-family:monospace;font-size:14px;line-height:1.42857142857143}
  .mp h2 {font-size:16px;line-height:1.25}
  .mp h1 {font-size:20px;line-height:2}
  .mp {text-align:justify;background:#fff}
  .mp,.mp code,.mp pre,.mp pre code,.mp tt,.mp kbd,.mp samp {color:#131211}
  .mp h1,.mp h2,.mp h3,.mp h4 {color:#030201}
  .mp u {text-decoration:underline}
  .mp code,.mp strong,.mp b {font-weight:bold;color:#131211}
  .mp em,.mp var {font-style:italic;color:#232221;text-decoration:none}
  .mp a,.mp a:link,.mp a:hover,.mp a code,.mp a pre,.mp a tt,.mp a kbd,.mp a samp {color:#0000ff}
  .mp b.man-ref {font-weight:normal;color:#434241}
  .mp pre {padding:0 4ex}
  .mp pre code {font-weight:normal;color:#434241}
  .mp h2+pre,h3+pre {padding-left:0}
  ol.man-decor,ol.man-decor li {margin:3px 0 10px 0;padding:0;float:left;width:33%;list-style-type:none;text-transform:uppercase;color:#999;letter-spacing:1px}
  ol.man-decor {width:100%}
  ol.man-decor li.tl {text-align:left}
  ol.man-decor li.tc {text-align:center;letter-spacing:4px}
  ol.man-decor li.tr {text-align:right;float:right}
  </style>
</head>
<!--
  The following styles are deprecated and will be removed at some point:
  div#man, div#man ol.man, div#man ol.head, div#man ol.man.

  The .man-page, .man-decor, .man-head, .man-foot, .man-title, and
  .man-navigation should be used instead.
-->
<body id='manpage'>
  <div class='mp' id='man'>

  <div class='man-navigation' style='display:none'>
    <a href="#NAME">NAME</a>
    <a href="#SYNOPSIS">SYNOPSIS</a>
    <a href="#DESCRIPTION">DESCRIPTION</a>
    <a href="#OPTIONS">OPTIONS</a>
    <a href="#EXAMPLES">EXAMPLES</a>
    <a href="#FILES">FILES</a>
    <a href="#AUTHOR">AUTHOR</a>
    <a href="#REPORTING-BUGS">REPORTING BUGS</a>
    <a href="#SEE-ALSO">SEE ALSO</a>
  </div>

  <ol class='man-decor man-head man head'>
    <li class='tl'>git-bulk(1)</li>
    <li class='tc'>Git Extras</li>
    <li class='tr'>git-bulk(1)</li>
  </ol>

  

<h2 id="NAME">NAME</h2>
<p class="man-name">
  <code>git-bulk</code> - <span class="man-whatis">Run git commands on multiple repositories</span>
</p>
<h2 id="SYNOPSIS">SYNOPSIS</h2>

<p><code>git-bulk</code> [-g] [--no-follow-symlinks] [--no-follow-hidden] ([-a]|[-w <ws-name>]) <git command> </git></ws-name><br>
<code>git-bulk</code> --addworkspace <ws-name> <ws-root-directory> (--from <url or file>) </url></ws-root-directory></ws-name><br>
<code>git-bulk</code> --removeworkspace &lt;ws-name&gt; <br>
<code>git-bulk</code> --addcurrent &lt;ws-name&gt; <br>
<code>git-bulk</code> --purge <br>
<code>git-bulk</code> --listall</p>

<h2 id="DESCRIPTION">DESCRIPTION</h2>

<p>git bulk adds convenient support for operations that you want to execute on multiple git repositories.</p>

<ul>
  <li>simply register workspaces that contain multiple git repos in their directory structure</li>
  <li>run any git command on the repositories of the registered workspaces in one command to <code>git bulk</code>
</li>
  <li>use the "guarded mode" to check on each execution</li>
</ul>

<h2 id="OPTIONS">OPTIONS</h2>

<p>-a</p>

<p>Run a git command on all workspaces and their repositories.</p>

<p>-g</p>

<p>Ask the user for confirmation on every execution.</p>

<p>--no-follow-symlinks</p>

<p>Do not traverse symbolic links under the workspace when searching for git repositories.</p>

<p>--no-follow-hidden</p>

<p>Do not traverse hidden (dotted) directories under the workspace when searching for git repositories.</p>

<p>-w &lt;ws-name&gt;</p>

<p>Run the git command on the specified workspace. The workspace must be registered.</p>

<p>&lt;git command&gt;</p>

<p>Any git Command you wish to execute on the repositories.</p>

<p>--addworkspace <ws-name> <ws-root-directory> (--from <url or file></url></ws-root-directory></ws-name></p>

<p>Register a workspace for bulk operations. All repositories in the directories below &lt;ws-root-directory&gt; get registered under this workspace with the name &lt;ws-name&gt;. &lt;ws-root-directory&gt; must be absolute path.</p>

<p>With option '--from' the URL to a single repository or a file containing multiple URLs can be added and they will be cloned directly into the workspace. Suitable for the initial setup of a multi-repo project.</p>

<p>--removeworkspace &lt;ws-name&gt;</p>

<p>Remove the workspace with the logical name &lt;ws-name&gt;.</p>

<p>--addcurrent &lt;ws-name&gt;</p>

<p>Adds the current directory as workspace to git bulk operations. The workspace is referenced with its logical name &lt;ws-name&gt;.</p>

<p>git bulk --purge</p>

<p>Removes all defined repository locations.</p>

<p>git bulk --listall</p>

<p>List all registered repositories.</p>

<h2 id="EXAMPLES">EXAMPLES</h2>

<pre><code>Register a workspace so that git bulk knows about it using an absolute path:

$ git bulk --addworkspace personal ~/workspaces/personal

Or register a workspace using an environment variable pointing to an absolute path:

$ git bulk --addworkspace personal '$PERSONAL_WORKSPACE'

Use option --from in order to directly clone a repository or multiple repositories 

$ git bulk --addworkspace personal ~/workspaces/personal --from https://github.com/tj/git-extras.git
$ git bulk --addworkspace personal ~/workspaces/personal --from ~/repositories.txt

repositories.txt
----------------------------------
https://host-of-git/repo-1.git
https://host-of-git/repo-2.git
https://host-of-git/repo-3.git


Register the current directory as a workspace to git bulk:

$ git bulk --addcurrent personal

List all registered workspaces:

$ git bulk --listall

Run a git command on the repositories of the current workspace:

$ git bulk fetch

Run a git command on the specified workspace and its repositories:

$ git bulk -w personal fetch

Run a git command but ask the user for confirmation on every execution (guarded mode):

$ git bulk -g fetch

Remove a registered workspace:

$ git bulk --removeworkspace personal

Remove all registered workspaces:

$ git bulk --purge
</code></pre>

<h2 id="FILES">FILES</h2>

<ul>
  <li>
<code>.gitconfig</code>: Store the <code>git-bulk</code> registered workspaces under the <code>bulkworkspaces</code> key.</li>
</ul>

<h2 id="AUTHOR">AUTHOR</h2>

<p>Written by Niklas Schlimm &lt;<a href="mailto:ns103@hotmail.de" data-bare-link="true">ns103@hotmail.de</a>&gt;</p>

<h2 id="REPORTING-BUGS">REPORTING BUGS</h2>

<p>&lt;https://github.com/nschlimm/git-bulk&gt;</p>

<h2 id="SEE-ALSO">SEE ALSO</h2>

<p>&lt;<a href="https://github.com/tj/git-extras" data-bare-link="true">https://github.com/tj/git-extras</a>&gt;</p>

  <ol class='man-decor man-foot man foot'>
    <li class='tl'></li>
    <li class='tc'>February 2025</li>
    <li class='tr'>git-bulk(1)</li>
  </ol>

  </div>
</body>
</html>