Git on Windows

From eqqon

(Redirected from Git and CSharp)
Jump to: navigation, search

Git support on Windows could be better ...

Want to improve the situation?


Contribute to Git#, the most advanced open source implementation of git for .NET


Every little bit helps:

  • Link to the Git# website to promote the project.
  • Tell your friends ...
  • Code! Add a unit test or tackle one of the missing features.


Stop complaining about the situation, start rocking and have fun!

Git is a distributed source code management tool originally developed for the Linux Kernel. Due to the versatility and extreme performance it is continuously gaining popularity for an ever increasing number of projects. Git is available on any Unix platform but Microsoft Windows still seems to be a hostile environment for git.

Git on Windows

Git on Cygwin

By now, the most complete git support for Windows is provided by Cygwin's Git package. However, this requires to install Cygwin and use git through its command line interface from the cygwin bash. Git on Cygwin is rock solid and stable and is without doubt the best choice for serious software development when you are a command line freak. For the more visual types among us, the TCL/Tk GUI gitk provides a graphical user interface that is able to display the branching tree and other things. However, in my opinion, gitk must be a horrible user interface for the spoiled average windows user. I'd rather use the CLI than gitk. I will go into detail about better git-GUIs for windows later.

msysGit

Git is also available as a standalone package for Windows as the msysGit package. Install msysGit (and be sure Cygwin is not installed or you will have some troubles) and use Git either from the windows command prompt or from the integrated bash. msysGit is the original git source code that has been compiled on msys into native windows executables with the advantage that the git commands can be called by other applications easily. Thanks to its better Windows-integration most of the graphical user interfaces that are available for windows are based on msysGit. The most important features of git are implemented and seem to work quite well, so it can be considered to be used for serious software development on Windows. On the other side, there are still some minor things missing. The best thing about msysGit is that one of the maintainers (johannes schindelin aka dscho) is a really nice person. He helped me very much by tracking down and fixing a msys-cygwin interaction problem on my system that caused infinite loops when pushing/pulling via ssh. Thanks to his efforts, the problem is now gone eventually and msysGit has really become quite useful!

TortoiseGit

The most natural way to interact with my files in git repositories is through the explorer integration of TortoiseGit. If you liked TortoiseCVS / TortoiseSVN then you will be liking TortoiseGit since it allows hands-on manipulation of your files and directories in the git repository. TortoiseGit is quite actively developed and has improved drastically over the last month. When I first testet it I was luckily and got a more or less stable release but I soon noticed that TortoiseGit is not yet quite stable. I expect it to be usable for serious development in a few month from now. I will update this article as soon as that happens.

TODO: There are some other git GUI projects for windows which need to be covered here.

Git for C#

My vision for a true windows version of git is an implementation in pure C#. Others are sharing this vision with me and have already started to work on it to make it come true. The mono project has initiated several successive Google summer of code projects but the outcome was not impressive so far. The fastest way towards a full fledged git implementation on .NET is to port jgit. The Git# project is doing so and has already ported many files. By porting the test suite the port will quickly become complete. Once the project reaches a critical mass it will break through. If you are interested in contributing to Git# please fork the project on github.