rgit - Recursively execute a command on all the git repositories in a directory tree.
rgit [-K|-I|-D|-V] [GIT_OPTIONS] COMMAND [COMMAND_ARGS]
This utility recursively searches in a root directory (which may be the current working directory or - if it has been set - the directory given by the
GIT_DIR environment variable) for all git repositories, sort this list by the repository path,
chdir into each of them, and executes the specified git command. For efficiency reasons, repositories located inside a bare repository or under the .git directory of a work repository won't be searched for.
Moreover, those formats are substituted in the arguments before running the command :
%nwith the current repository name.
%gwith the relative path (based from the root directory) to the current repository.
%Gwith the absolute path to the current repository.
%wwith the relative path (based from the root directory) to the current repository's working directory.
%Wwith the absolute path to the current repository's working directory.
%bwith a "bareified" relative path, i.e.
%gif this is a bare repository, and
%Bwith an absolute version of the "bareified" path.
%Rwith the absolute path to the root directory.
%%with a bare
There are actually a few commands that are only executed once in the root directory :
version. For any of those, no format substitution is done.
You can specify which
git executable to use with the
GIT_EXEC_PATH environment variable.
rgit takes its options as the capital switches that comes before the git command. It's possible to bundle them together. They are removed from the argument list before calling
Keep processing on error. The default policy is to stop whenever an error occured.
Enables interactive mode when the standard input is a tty. Requires Term::ReadKey to be installed. This lets you choose interactively what to do when one of the commands returns a non-zero status.
Outputs the version.
git gc on all the repositories below the current directory :
Tag all the repositories with their name :
rgit tag %n
Add a remote to all repositories in "/foo/bar" to their bare counterpart in
qux on host :
GIT_DIR="/foo/bar" rgit remote add host git://host/qux/%b
<perl at profvince.com>, http://profvince.com.
You can contact me by mail or on
Please report any bugs or feature requests to
bug-rgit at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=rgit. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
You can find documentation for this module with the perldoc command.
Tests code coverage report is available at http://www.profvince.com/perl/cover/rgit.
Copyright 2008,2009,2010 Vincent Pit, all rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.