views:

1792

answers:

25

I've been interested in Git, but the last time I looked the Windows support was essentially "run Linux".

Are there any distributed source control tools that run well on Windows?

+2  A: 

I hear good things about Mercurial. Git does run on Windows though.

Bernard
+4  A: 

There are a lot of good reasons to run Linux, Git is just one of them. I'd urge you to reconsider and give it a try.

Otherwise, check out: http://en.wikipedia.org/wiki/Comparison_of_revision_control_software

There's a sortable table of source control tools, you can sort "Repository model" and look at what platforms all the "Distributed" run on. I noticed Git does support windows, but only using Cygwin

Karl Seguin
+6  A: 

Check out Mercurial. I have not used it myself, but it has official Windows Packages.

Michael Stum
+3  A: 

Git does have a windows client much like TurtoiseSVN: http://repo.or.cz/w/git-cheetah.git/

Karl Seguin
+5  A: 

This seems to be a pretty reasonable guide to running git on windows: http://kylecordes.com/2008/04/30/git-windows-go/

Peter Burns
+4  A: 

I've played with Mercurial (hg for short) on Windows and enjoyed it -- the setup was painless. There are various GUI tools to integrate it with Windows Explorer. I've written a short tutorial, which may help you get started.

kurious
+6  A: 

Git is gaining more and more Apple/Windows support now that Rails and github are around.

Have you seen http://github.com/?

You should be able to run Git on Windows without Cygwin by using msysGit. http://code.google.com/p/msysgit/

As @rictic mentioned, this guide is good: http://kylecordes.com/2008/04/30/git-windows-go/

engtech
+4  A: 

The other DVCS I am aware of is Bazaar The site boasts ease of use and support for all three major OS's

Justin Walgran
A: 

I've used GIT on my trusty Cygwin Installation for a while now and it's very nice. If you have the option to install Cygwin, I suggest to install GIT as well and try it on your own...

Shadow_x99
A: 

I've used mercurial and it was pretty nice, altho it still has some early teething problems. One of the annoying things about it was that your repositories had to be in the root directory of the folder you wanted to place your files under source control and it was hard to have projects spread in different locations sharing the same repository.

Merging and branching was pretty easy tho and once you got used to the commands it was all pretty straight forward

lomaxx
+21  A: 

Mercurial runs very well under Windows--the major factor that encouraged us to adopt it where I work. The best way to install and use it is TortoiseHg, which provides integration with Explorer and open/save dialogs. The package comes with the most recent command-line version of Mercurial, plus lots of bells and whistles, such as good GUI tools for viewing and searching your repository history, third-party extensions not normally included, and easy ways to configure your Mercurial setup. If you interact often with Unix developers, you should also take a look at the win32text extension, which will take care of line-ending issues.

As far as git on Windows goes: I don't personally find running a program in Cygwin on Windows counts as a native Windows solution, any more than running something compiled against winelib makes it a native Linux program. You'll still have to deal with comparatively poor performance (git itself is fast, but makes many Unix-centric decisions that hurt it on Windows), an entirely different command-line set that won't integrate with the rest of your tool chain, and an entire new class of line-ending issues as some Unix-centric and some Windows-centric tools walk over your text files.

Benjamin Pollack
I ♥ HG! Mercurial total rocks and it is solid on windows and Linux.
Stefan Rusek
+2  A: 

I use Mercurial on GNU/Linux, but with

Mercurial works very nice on Windows.

It's easy enough to use that I could without problems:

  • teach it to a not-that-computer-savvy-collegue for writing text together.
  • guide a friend by phone through installing Mercurial (TortoiseHG), creating a repository and setting it up for working together using seperate push (his) and pull (mine) repositories - after installing it only once on a Windows machine (I only run GNU/Linux).
+1  A: 

Darcs seems to work on Windows just as well.

manveru
+1  A: 

Bitkeeper runs well on windows (as well as *nix and mac). It is a commercial product.

Bryan Oakley
a very good commercial product (although not as scriptable as git)
Ben Collins
+1  A: 

I use Git on Windows daily to do version control of a Delphi software' source code. Just use Cygwin to install it: http://www.cygwin.com/setup.exe

http://www.advogato.org/person/apenwarr/diary/371.html

Eduardo
A: 

Git officially runs in Windows using "Cygwin". However, there is this project hosted in "Google Code" to compile git using "msys": http://code.google.com/p/msysgit/

Personally, I have tried both "git" and "Mercurial (hg)" which are the best free DSC options out there. For me, the lack of graphical tools for "git" under Windows has been a major drawback so I'll recommend "Mercurial" using "TortoiseHg": http://tortoisehg.sourceforge.net/

The only issue I've found with "ToitoiseHg" is that it doesn't integrate with the Windows Explorer Shell under Windows Vista 64-bits. You can install some 32-bits file explorer, like http://www.freecommander.com/ to overcome this.

If you are going to use "git" then by all means use the "msys" version. It's much lighter than Cygwin, although it seems the Cygwin version is updated more often.

You might like to check out SmartGit which is very polished, and new on the scene since you asked this question.
Benjol
+1  A: 

I develop almost exclusively on Windows (Cygwin environment) and use nothing but git. I'm not sure where the idea that git is problematic on Windows came from, but I've certainly had no issues with it.

Dark Shikari
From the other comments it should be clear that the problematic part is the Cygwin environment.
Martin Geisler
A: 

I chose Bazaar over Mercurial, but they have essentially identical functionalty. Git never appealed to me much

Scott Evernden
What was your rationale for Bazaar over Mercurial?
jpartogi
+12  A: 

It seems to be that the three big open source players are bzr, git and hg (I discard non open source ones because I have never used them, but that can be a valid option, specially on windows).

As some mentioned, git does work natively (e.g. without cygwin) on windows. Git is the most powerful, and has a lot of traction. It will (it already is) be a key player, because it is used by several key open source projects (linux, Xorg, a lot of freedesktop stuff, RoR, and more to come for sure).

bzr is the one I know the most, and works reasonably well. The basic command set are the same as for subversion (commit, log, blame, etc....). Bzr seems more solid on windows thanks to unicode support which seems more integrated in bzr (every path is treated as unicode internally). I use bzr all the time to share between my main machine on linux and windows VM. Also, bzr has support for many network protocols (dumb http, ftp, sftp, etc...).

Hg is implemented in python, as bzr, meaning it is practically more portable than git (which is C + shell scripts). Hg looks similar to bzr, but has more corner cases and a bit more fragile wrt errors (not corruption or anything, but for example, by default, hg needs some env variables set on mac os X, things like that).

Concerning the branch model: hg and git follow the model of many branches in one repository, one branch at a time. By that, I mean that in a repository, at any moment, you have only one working tree corresponding to one branch. This means that switching between branches is easy and fast, and sharing repository data is easier.

bzr follows a different model than hg and git, that is you have one directory per branch (if you have one branch b1 and one branch b2, the two branches will be two different directories, a bit like when you checkout from svn). It means it is easier to use external tools (one working tree per branch), but IMHO, it is less powerful than hg/git model, because at least in git case, you can do very advanced stuff between branches, and I think part of it is because of having the same repository between the two branches(like logging only the commits from branch1 which are not in branch2; bzr can do it too, but if each branch has its own repository, I guess this can have an impact on the performances).

Another difference is that in bzr, the mainline is considered special. You can change which branch is the mainline at any moment (it is not less distributed than git or hg in that regard), but it has consequences on how the log is displayed, and in the revision number at the UI level. Besides revid which are unique for any revision, bzr mostly use revno, which are simple integer like for subversion. Of course, those numbers are not distributed (if you change your branch, the revno change), but that means it looks easier.

I am a big user of bzr, I have used it for more than two years for every project of mine. But more recently, I have been using git (for svn projects through git-svn), and I like it more and more. The branch model of git is more powerful IMHO. I find the bzr revno confusing, because when you merge branches, your numbers do not really make sense anymore, you have 172 coming after 174.1 or things like that. Also, bzr is slow compared to hg, and painfully slow compared to git (at least on linux). We are talking about order of magnitude. The two areas where bzr is really slow are big histories (ten of thousand of commits) and network; bzr scales ok for big working trees. OTOH, bzr has launchpad for bug tracking, and although launchpad has its (many) warts, it is getting better and better; you don't have much free options for git or hg if you want bug tracking. Also, I find bzr the one which has the best error system: when it fails, you almost always know why; git error message can be cryptic.

The GUI tools on windows are pretty bad for all of them. TortoiseHG is a joke.

To sum up:

  • git: fastest, most powerful, lot of developers/users behind it
  • bzr: easy to use, more support for centralized development, maybe less confusing for users used to svn/cvs, slow, good support on windows.
  • hg: a bit of the middle between git and bzr.
  • all suck at GUI tools on windows
David Cournapeau
I don't believe Git is more powerful than Mercurial. This is a common misunderstanding based on the workflows encouraged by each program. Mercurial can quite easily modify branches like Git can, and the underlying concepts are very similar if not identical.
Martin Geisler
Hg has some advantages (like its http protocol which is much more efficient than git http one), but I still think git is more powerful. I find bookmark/named branches confusing in mercurial, I don't understand why there needs to be several concepts. Git can detect code moves across files, which works pretty well in my experience, and can be invaluable. And some operations in hg are still pretty slow (e.g. hg clone -r 1234 is much slower than hg clone, but it makes almost no difference in git). Git remotes handling, while still not great from a UI POV, is quite beyond what hg provides ATM.
David Cournapeau
A: 

The msysgit installer seems to have Git running quite nicely under Windows. It's a little slower than under Linux, and the gui screens might look a little clunky, but it's quite useable. You can download the installer from http://code.google.com/p/msysgit/

David Plumpton
A: 

here is a nice podcast on Git

Charles Faiga
+3  A: 

I think you will find git, mercurial(hg), and bazaar all pretty good at this point. They all have major projects using them (though I think bazaar has less than the others):

  • bazaar - Ubuntu Linux
  • git - Linux Kernel
  • Mercurial(hg) - Mozilla Firefox

In looking at all the references I can find, the general feelings seem to be that git has been engineered from the ground up to be more powerful and versatile, while Mercurial has a more polished user interface and feel. Bazaar just doesn't seem to have the same traction as the other two, though there are some dedicated users. If you'd asked me a year ago, I would have told you git seemed to be a fast moving target, and rough around the edges, so avoid it. Now, I am thinking of going to git full time. The only worry I see is that there is no windows gui, and I need that for some less savvy people to pull things from the repository. I had heard about git-cheetah, and looked into it, but the project seems to have lost all its developers, and hasn't had anything checked in since February. Mercurial, on the other hand, does have TortoiseHg which had its last check-in 2 weeks ago(unstable).

Git has garnered a lot of attention with github. Mercurial now has bitbucket to fill that void.

If you and your other repository users like the command line, go with git. If you have to have a gui now, Mercurial is your best bet. It may be a while before git gets a stable windows gui, but I think it will eventually happen.

MattG
A: 

I used msysGit on Windows for a while but got a bit tired of non Windows style of tools. Moved to Mercurial and been a happy camper since.

mmiika
A: 

Plastic SCM is distributed and 100% usable on windows. You can distribute branches back and forth using the GUI, it has ACLs, good branching, nice graphics...

It's free for students, open source projects and hobbyists.

pablo
+1  A: 

"The only issue I've found with "TortoiseHg" is that it doesn't integrate with the Windows Explorer Shell under Windows Vista 64-bits."

Starting with version 0.8 (released 2009-07-01) TortoiseHg supports Windows Vista 64bit explorer shell integration. Thanks to the new C++ shell extension (I contributed significantly to that).

Check current release TortoiseHg-0.8.1-hg-1.3.1.exe available from http://bitbucket.org/tortoisehg/stable/downloads/

abuehl