threads / discuss / 25177

Announce gitslave - manage a superproject with slave repositories

Subject: Announce gitslave - manage a superproject with slave repositories

## tl;dr

3 messages between Sep 21, 2010 and Sep 23, 2010.

replies: 2people: 3as markdown or json

Seth Robertson· Sep 21, 2010, 01:39 UTC · lore
I'd like to announce the first public version of gitslave.

gitslave creates a group of related repositories all of which are concurrently developed on and on which all git operations should operate, so when you branch, each repository in the project is branched in turn. Similarly when you commit, push, pull, merge, tag, checkout, status, log, etc; each git command will run on the superproject and all slave repositories in turn. This sort of activity may be very familiar to CVS users and to a lesser extent subversion users where it was fairly normal to assemble a superproject in just this way.

git-submodules is the legacy solution for a similar sort of activity, but went a different way. With submodules you have a semi-fixed subrepository which you are typically not doing active development on and which git commands performed on the superproject will not recurse down into the submodules. Another option is to stick everything in one giant repository, but that does not work well if some subsets are shared with other superprojects.

The gits wrapper around git combines (and occasionally post-processes for some special commands) the git output to make everything clearer, which is very useful when you have a few dozen slaves where looking at a concatenation of identical output for each git command would lose the wheat in the chaff.

However, gitslave is not perfect. You can have partial success and failure (which is advertised), programs like `gitk` will not show the global systems' history only a specific repository's, and things can get a little squirrelly if different branches/tags have different slave modules associated with them and you checkout back and forth. However, we have not had any significant problems in over two years of intensive work on a project using this script.

If your development style or project lends itself to many individual repositories, and those repositories are under your direct control and all repositories should at identical branch names at the same time, gitslave might just be for you.

http://gitslave.sourceforge.net/

Current release as of 2010-09-20: 1.0.0 http://sourceforge.net/projects/gitslave/files/gitslave-1.0.0.tar.gz/download

                                        -Seth Robertson
Jakub Narebski· Sep 21, 2010, 21:47 UTC · re: Seth Robertson · lore

Re: Announce gitslave - manage a superproject with slave repositories

Seth Robertson <in-gitvger@baka.org> writes:
Show 11 quoted lines
> I'd like to announce the first public version of gitslave.
> 
> gitslave creates a group of related repositories all of which are
> concurrently developed on and on which all git operations should
> operate, so when you branch, each repository in the project is
> branched in turn.  Similarly when you commit, push, pull, merge,
> tag, checkout, status, log, etc; each git command will run on the
> superproject and all slave repositories in turn.  This sort of
> activity may be very familiar to CVS users and to a lesser extent
> subversion users where it was fairly normal to assemble a
> superproject in just this way.
[...]
> http://gitslave.sourceforge.net/
> 
> Current release as of 2010-09-20: 1.0.0
> http://sourceforge.net/projects/gitslave/files/gitslave-1.0.0.tar.gz/download
Could you please add information about this project to
InterfacesFrontendsAndTools page on Git Wiki:
  https://git.wiki.kernel.org/index.php/InterfacesFrontendsAndTools
Somewhere in neighbourhood of 'repo' or 'git-subtree' could be good.
Thanks in advance.
-- 
Jakub Narebski
Poland
ShadeHawk on #git
Thomas Adam· Sep 23, 2010, 22:49 UTC · re: Seth Robertson · lore

Re: Announce gitslave - manage a superproject with slave repositories

Hi --
On 21 September 2010 02:39, Seth Robertson <in-gitvger@baka.org> wrote:
>
> I'd like to announce the first public version of gitslave.

I had a very quick cursive look at the perl. Any reason why you're using using the Git module shipped with GIt, and relying on your own use of system() which is arguarbly bad?

-- Thomas Adam

← back to recent threads