mirror of
https://github.com/tj/git-extras.git
synced 2026-09-10 07:26:17 -04:00
* fix(git-bulk): fix workspace selection when cd fails
`cd` may fails for multiple reasons:
- mistake when editing `.gitconfig` manually
- previously existing workspace that have been removed
- ...
Currently, if `cd` fails, the `BulkOp` continue its execution ... in the
workspace defined in a higher directory that where the user, despite the
user specified a specific workspace (`-w`).
The user should be noticed of a failed `cd` (this is really not expected
for a valid configuration) and the operations should stop to not execute
something unexpected.
* fix(git-bulk): replace weak eval for better variable substitution
Get rid of poor `eval` syntax because they are vulnerable to command
injection, which may have unexpected side effects.
However, they enabled a useful feature: using environment variable
(*e.g.*, defined in a `.bashrc`) inside the `.gitconfig` to use dynamic
paths as `bulk` workspaces.
As such, I keep this feature possible by using the Bash's ${!VAR}
syntax, which allows to get the value of one variable using the name of
a another variable. However, arbitrary command injection is not possible
anymore.
* fix(git-bulk): missing check about empty environnement variable
* style(git-bulk): typo
* docs(Commands.md): git-bulk env var feature
* docs(man/git-bulk): git-bulk env var feature
* docs(man/git-bulk): mention .gitconfig for config storage
* style(man/git-bulk): typo
* docs(man/git-bulk): run make/ronn for .1 and .html
125 lines
3.6 KiB
Groff
125 lines
3.6 KiB
Groff
.\" generated with Ronn-NG/v0.9.1
|
|
.\" http://github.com/apjanke/ronn-ng/tree/0.9.1
|
|
.TH "GIT\-BULK" "1" "February 2025" "" "Git Extras"
|
|
.SH "NAME"
|
|
\fBgit\-bulk\fR \- Run git commands on multiple repositories
|
|
.SH "SYNOPSIS"
|
|
\fBgit\-bulk\fR [\-g] ([\-a]|[\-w
|
|
.br
|
|
\fBgit\-bulk\fR \-\-addworkspace
|
|
.br
|
|
\fBgit\-bulk\fR \-\-removeworkspace <ws\-name>
|
|
.br
|
|
\fBgit\-bulk\fR \-\-addcurrent <ws\-name>
|
|
.br
|
|
\fBgit\-bulk\fR \-\-purge
|
|
.br
|
|
\fBgit\-bulk\fR \-\-listall
|
|
.SH "DESCRIPTION"
|
|
git bulk adds convenient support for operations that you want to execute on multiple git repositories\.
|
|
.IP "\[ci]" 4
|
|
simply register workspaces that contain multiple git repos in their directory structure
|
|
.IP "\[ci]" 4
|
|
run any git command on the repositories of the registered workspaces in one command to \fBgit bulk\fR
|
|
.IP "\[ci]" 4
|
|
use the "guarded mode" to check on each execution
|
|
.IP "" 0
|
|
.SH "OPTIONS"
|
|
\-a
|
|
.P
|
|
Run a git command on all workspaces and their repositories\.
|
|
.P
|
|
\-g
|
|
.P
|
|
Ask the user for confirmation on every execution\.
|
|
.P
|
|
\-w <ws\-name>
|
|
.P
|
|
Run the git command on the specified workspace\. The workspace must be registered\.
|
|
.P
|
|
<git command>
|
|
.P
|
|
Any git Command you wish to execute on the repositories\.
|
|
.P
|
|
\-\-addworkspace
|
|
.P
|
|
Register a workspace for bulk operations\. All repositories in the directories below <ws\-root\-directory> get registered under this workspace with the name <ws\-name>\. <ws\-root\-directory> must be absolute path\.
|
|
.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
|
|
\-\-removeworkspace <ws\-name>
|
|
.P
|
|
Remove the workspace with the logical name <ws\-name>\.
|
|
.P
|
|
\-\-addcurrent <ws\-name>
|
|
.P
|
|
Adds the current directory as workspace to git bulk operations\. The workspace is referenced with its logical name <ws\-name>\.
|
|
.P
|
|
git bulk \-\-purge
|
|
.P
|
|
Removes all defined repository locations\.
|
|
.P
|
|
git bulk \-\-listall
|
|
.P
|
|
List all registered repositories\.
|
|
.SH "EXAMPLES"
|
|
.nf
|
|
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
|
|
.fi
|
|
.SH "FILES"
|
|
.IP "\[ci]" 4
|
|
\fB\.gitconfig\fR: Store the \fBgit\-bulk\fR registered workspaces under the \fBbulkworkspaces\fR key\.
|
|
.IP "" 0
|
|
.SH "AUTHOR"
|
|
Written by Niklas Schlimm <\fIns103@hotmail\.de\fR>
|
|
.SH "REPORTING BUGS"
|
|
<https://github\.com/nschlimm/git\-bulk>
|
|
.SH "SEE ALSO"
|
|
<\fIhttps://github\.com/tj/git\-extras\fR>
|