SYNOPSIS
To check the status of bunch (will do a 'git status' for each git repo
inside the bunch and report which repos are 'unclean', e.g. needs
commit, has untracked files, etc):
% gitbunch check ~/repos
To synchronize bunch to another (will do a 'git pull/push' for each git
repo, and do an rsync for everything else):
% gitbunch sync ~/repos /mnt/laptop/repos
DESCRIPTION
A gitbunch or bunch directory is just a term I coined to refer to a
directory which contains, well, a bunch of git repositories. It can
also contain other stuffs like files and non-git repositories (but they
must be dot-dirs). Example:
repos/ -> a gitbunch dir
proj1/ -> a git repo
proj2/ -> ditto
perl-Git-Bunch/ -> ditto
...
.foo/ -> a non-git dir
README.txt -> file
A little bit of history: after git got popular, in 2008 I started using
it for software projects, replacing Subversion and Bazaar. Soon, I
moved everything to git: notes & writings, Emacs .org agenda files,
configuration, even temporary downloads/browser-saved HTML files.
Currently, except large media files, all my personal data resides in
git repositories. I put them all in ~/repos (and add symlinks to
various places for convenience). This setup makes it easy to sync to
laptops, backup to disk, etc. Git::Bunch is the library/script I wrote
to do this.
See also File::RsyBak, which I wrote to backup everything else.
FAQ
SEE ALSO
mr, http://joeyh.name/code/mr/ . You probably want to use this instead.
mr supports other control version software aside from git, doesn't
restrict you to put all your repos in one directory, supports more
operations, and has been developed since 2007. Had I known about mr, I
probably wouldn't have started Git::Bunch. On the other hand,
Git::Bunch is simpler (I think), doesn't require any config file, and
can copy/sync files/directories not under source control. I mainly use
Git::Bunch to quickly: 1) check whether there are any of my
repositories which have uncommitted changes; 2) synchronize (pull/push)
to other locations. I put all my data in one big gitbunch directory; I
find it simpler. Git::Bunch works for me and I use it daily.