user1071914
user1071914

Reputation: 3393

How to run Git server on Windows?

How can I share a Git repo on Windows? The "correct" ways appear to be to run "git-daemon" (unix specific) or run ssh (unix specific) or run an http front end for Git. If I just have two Windows boxes and don't feel like installing Unix just to run Git, what is the optimal way to share the repos between the two boxes?

Upvotes: 16

Views: 16686

Answers (5)

Adam Dymitruk
Adam Dymitruk

Reputation: 129526

What I have done in the past is just run a VM with a small linux client on one machine through virtual box. You only need to port forward the ssh port and you're good to go - no need for configuring the network to something complicated on the VM.

This will allow you to run things like gitolite to manage users.

For this and many other reasons, I've switched to running Linux for all my machines and just run windows in a VM when I need to do Windows development. Lots of great services that you can run on Linux are more easily connected to from the guest OS than the other way around.

If you will have only the 2 windows machines, you can add a url to the remote, but ensure it is done via the file protocol. ie:

 git remote add origin file:///\\some-server/share/repo.git

Some people claim that if you use just a path, git will try to make hard-links between the 2 repos. AFAIK, msysgit does not do this and you can use a path with no file protocol:

 git remote add origin /z/somepath/repo.git

if z is mapped to a share on the other machine. I didn't need to run a server in your scenario.

Upvotes: 0

Lazy Badger
Lazy Badger

Reputation: 97280

If you want easiest way, you have to see at SCM-manager

The easiest way to share and manage your Git, Mercurial and Subversion repositories over http.

In order to have http-served repository with nice Web-frontend and management you have to have only Java (Java, not JRE)

Upvotes: 4

Chris Mansley
Chris Mansley

Reputation: 782

Git is a distributed version control system. So, in most situations, you don't need a dedicated program to serve the content in the repository, you just need a way to access the repository from both machines. One way of doing this is like @thomas suggested and placing a clone of the repository in a shared network location.

Another way that I have found successful in the past as a broke graduate student, is to use Dropbox as the "master" repository. Basically, you git clone your repository into your Dropbox directory, then you can setup Git on both machines to push/pull from the Dropbox repository. Dropbox will do the syncing magic in the background. This only works for mildly active repositories.

Upvotes: 1

slebetman
slebetman

Reputation: 113866

Another alternative instead of running a virtual machine is to run all the Unix stuff in Cygwin. With Cygwin you can set up an ssh server on your windows machine as well as gitolite. And it runs natively on your hardware instead of a virtual machine.

Cygwin installation is very straight forward. It's just a single executable that downloads the packages you need. Keep the installer around because it's what you'll use to add and remove software in Cygwin.

Running gitolite on Cygwin is not as simple but just google "cygwin gitolilte" and you'll find lots of tutorials.

Upvotes: 3

Thomas
Thomas

Reputation: 181735

If both machines are in the same LAN, you can put the repo in a directory shared via the regular Windows network protocol (SMB).

(Disclaimer: I'm not certain about locking semantics for SMB, so it could be that simultaneous writes to the repo could corrupt it. Then again, the same probably holds for Unix.)

Upvotes: 8

Related Questions