Setup a Git server with msysgit on Windows

Viewed 137679

My friends and I are trying to setup Git for Windows using the tutorial Git Server: Gitosis and Cygwin on Windows, but we just keep running into problems.

What would a "Setup Git Server" guide for Windows using msysgit be like?

There is a comment in the tutorial above suggesting it can't be done with msysgit because gitosis requires the use of an SSH Server and Bash? What is a step by step guide (as there is not one available)?

  1. Install mysisgit

  2. ?

12 Answers

With regards to the reference to the Tim Davis page - Setting up a Msysgit Server with copSSH on Windows - I used this to get a Git server running on Windows 7 Home Premium 64.

Below is a postmortem/update of what I learned in addition to his instructions.

Like Tim Davis said, this was an arduous and frustrating process, at least for me - I'm not too good with integration of this sort, but I learned alot in the process. I hope my pain benefits someone else in the future, because this was an arduous process.

  1. There is a step to copy all the Git executables into your CopSsh bin directory. Instead of copying files and figuring out which files are needed, add the git bin path to your git path. I did so by modifying my .bashrc and CopSsh profile.

    Here's what I added to .bashrc (in your CopSsh and Windows home directory):

    gitpath='/cygdrive/c/Program Files (x86)/Git/bin'

    gitcorepath='cygdrive/c/Program Files (x86)/Git/libexec/git-core'

    PATH=${gitpath}:${gitcorepath}:${PATH}

    Here's what I added to the bash profile (in CopSsh etc/profile):

    gitpath='/c/Program Files (x86)/Git/bin'

    gitcorepath='cygdrive/c/Program Files (x86)/Git/libexec/git-core'

    export PATH="/bin:$syspath:$gitpath:$gitcorepath:$winpath"

    There is some duplication here - it works for me, so someone chime in which is the correct place to modify the path.

  2. The newer msysgit versions might not give you the screen to choose the ssh executable where you choose between the Git ssh and PuTTY ssh. You'll have to set GIT_SSH manually if you use PuTTY.

  3. I didn't follow one part of the instructions and that was installing Tortoise - I used the command line instead as that's how I prefer to learn a vcs like I did with rcs and Subversion and found that to work for me. I had problems with the clone command using ssh. Here's how I did it:

    Git clone using ssh - can't find repository

    This is where I banged my head the most.

  4. The CopSsh install directory was /Program Files (x86)/ICW. I got away with this, but if I were doing it again, I'd use a directory name with no spaces.

  5. These other sources helped me figure things out:

    Another way to setup a Git server on Windows:

    http://code.google.com/p/tortoisegit/wiki/HOWTO_CentralServerWindowsXP

    The client side of things:

    http://toolmantim.com/thoughts/setting_up_a_new_remote_git_repository

    An explanation of Git as a server (not related to Windows, but a more in depth look than installation steps):

    http://progit.org/book/ch4-0.html

    Plus O'Reilly's Version Control with Git - the Remote Repositories chapter.

In retrospect, if I had known how time consuming this would be, I might have started out with Mercurial as I read the install on Windows is easier, but I'll have an opinion on that after I work with Git awhile and then try Mercurial.

I am not sure why anyone hasn't suggested http://gitblit.com. Pure java based solution, allow HTTP protocol and really easy to setup.

After following Tim Davis' guide and Steve's follow-up, here is what I did:

Server PC

  1. Install CopSSH, msysgit.
  2. When creating the CopSSH user, uncheck Password Authentication and check Public Key Authentication so your public/private keys will work.
  3. Create public/private keys using PuTTygen. put both keys in the user's CopSSH/home/user/.ssh directory.
  4. Add the following to the user's CopSSH/home/user/.bashrc file:

    GITPATH='/cygdrive/c/Program Files (x86)/Git/bin'
    GITCOREPATH='/cygdrive/c/Program Files (x86)/Git/libexec/git-core'
    PATH=${GITPATH}:${GITCOREPATH}:${PATH}
    
  5. Open Git Bash and create a repository anywhere on your PC:

    $ git --bare init repo.git
    Initialized empty Git repository in C:/repopath/repo.git/
    

Client PC

  1. Install msysgit.
  2. Use the private key you created on the server to clone your repo from ssh://user@server:port/repopath/repo.git (for some reason, the root is the C: drive)

This allowed me to successfully clone and commit, but I could not push to the bare repo on the server. I kept getting:

git: '/repopath/repo.git' is not a git command. See 'git --help'.
fatal: The remote end hung up unexpectedly

This led me to Rui's trace and solution which was to create or add the following lines to .gitconfig in your Client PC's %USERPROFILE% path (C:\Users\UserName).

[remote "origin"]
    receivepack = git receive-pack

I am not sure why this is needed...if anybody could provide insight, this would be helpful.

my git version is 1.7.3.1.msysgit.0

There is a nice open source Git stack called Git Blit. It is available for different platform and in different packages. You can also easily deploy it to your existing Tomcat or any other servlet container. Take a look at Setup git server on windows in few clicks tutorial for more details, it will take you around 10 minutes to get basic setup.

Related