I was working on the integration of live-initramfs for grml in the last few days. As the Debian maintainers of live-initramfs switched from svn to git and I contributed several patches I had to deal with git as well. Thanks to my personal VCS hero gebi I learned some cute tricks for working with git. One very nice tip is the ‘git-server for the poor’, which is pretty simple to use and set up as soon as you know what to do. 😉 As there isn’t that much documentation regarding this issue on the net yet I’ll provide the necessary steps here:
On the server side (where you are running a webserver) you just need a directory for serving via HTTP:
% mkdir -p /var/www/grml/git/live-initramfs.git
On the client side check out the original repository, create a branch, edit what you want to and finally put it on the server so upstream can grab it:
% git clone git://git.debian.org/git/users/daniel/live-initramfs.git % cd live-initramfs % git checkout -b cool_new_feature Switched to a new branch "cool_new_feature" % $EDITOR $FILE(S)_YOU_WANT_TO_CHANGE % git commit -a % git-update-server-info % rsync -az .git/* server:/var/www/grml/git/live-initramfs.git/
Now upstream (or you) can work with the remote git repository in the local repository and can refer to it through a name:
% git remote add prokop http://grml.org/git/live-initramfs.git % git remote update
Let’s checkout what we have on the remote repository available:
% git remote show prokop * remote prokop URL: http://grml.org/git/live-initramfs.git Tracked remote branches cool_new_feature master % git diff master..prokop/cool_new_feature
Finally do with it whatever you like, for example:
% git merge master prokop/cool_new_feature ... or ... % git merge $COMMIT_ID ... or ... % git co master % git merge prokop/cool_new_feature ... or ... % git checkout -b my_test_branch prokop/cool_new_feature ... or ... % git-merge ... or ... % git-cherry-pick ... or ...
This process might be very handy for working together with upstream (hi, panthera :-))
JFTR: I’m tracking useful ressources for working with git at my del.icio.us page.