Git Daemon on Windows – Sept 2013
Note that I have given up with Git server on widows, and moved to a Linux Mint distro that I set up, see Git on Mint.
Sept 2013
I have a PC which I want to use as a backup for the Git projects’s on my laptop.
NOTE, msysgit issue 457 means the windows git push will hang, and as of Feb 28th 2013 the recommendation is to revert to older versions of git, use Samba, use SSH or even move to JGit. That is until you find a very fine gentleman who has archived an old Git client which doesn't have the bug in.He posted to http://stackoverflow.com/questions/7104182/git-push-halts-on-writing-objects-100and his version of the client is at: https://skydrive.live.com/?cid=624606b9c3176d53&id=624606B9C3176D53%214848&authkey=!ANl5kSH_bExkzrk |
On both I will use c:\2013-dev\javaproject\ as the base dir. And in the example below I am working on a project called proj1.
Server:
NOTE: the server will use bare repositories which you cannot add to, only push to. The convention is to call these dir <proj>.git so you can tell this.
cd /c/2013-dev/javaprojects mkdir proj1.git cd proj1.git git init --bare git daemon --base-path=/c/2013-dev/javaprojects/ --export-all --enable=receive-pack --reuseaddr --verbose
Finally, I created a bat file for my own use to start the server
"C;\Program Files (x86)\Git\bin\sh.exe" --login -i -c 'git daemon --base-path=/c/2013-dev/javaprojects/ --export-all --enable=receive-pack --reuseaddr --verbose'
I also change the Git bash sh start dir to start up in c:\2013-dev\javaprojects by editing the shortcut properties.
Laptop
cd c:\2013-dev\javaprojects mvn archetype:generate -DgroupId=com.jgibbons.proj1 -DartifactId=proj1 -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false cd proj1 mvn eclipse:eclipse git init git add * git commit -m "Initial commit" git remote add origin git://192.168.0.4/proj1.git git push -u origin master
Should IP of origin change:
git remote rm origin git remote add origin git://192.168.0.3/proj1.git git push
and should there be pushes into origin which you want, then
git pull origin master
===snip===
If you wanted to then work in the pc which also hosts the git bare versions, you would start the git bash,
cd /c/2013-dev/localprojects/ mkdir proj1 git clone git://localhost/proj1.git proj1
===snip===
On windows %HOMEPATH% is where .m2 repos and .gitconfig and so on are stored. eGit needs HOME to be set to this same location.
===snip===
Useful stuff while playing on the client
# tells you if you have any already git remote -v # if you messed up and want to remove origin git remote rm origin # to see if you got it right git ls-remote origin
====snip===
If it doesn’t work, then read the note at the top of this page - are you on that version of Git?
Do you then get:
$ git clone git://192.168.0.2/mapdesigner.git mapdesigner Cloning into mapdesigner... remote: Counting objects: 36, done. remote: Compressing objects: 100% (28/28), done. fatal: read error: Invalid argument fatal: early EOFs: 63% (23/36) fatal: index-pack failed
It appears that Git is basically rubbish on windows. I repeated the command about 5 times over about 5 minutes and eventually I got everything. So, just accept that Git is not as good as SVN, but its sexier so thats fine. (being a techie from 1873 I have used CVS, PVCS, Clearcase, SVN, Git and others over the years)