This is a port of GIT to Windows using MinGW. The goal of this port is to have the tools runnable from the Windows command line, not from MinGW's rxvt+bash environment. (Note: This file was written after-the-fact and may contain errors. If you are trying this, please make notes and update it.) INSTALLATION ------------ In order to compile this code you need: - MSYS, e.g. MSYS-1.0.11-2004.04.30-1.exe - MinGW, e.g. MinGW-5.0.2.exe - mingwruntime, e.g. mingw-runtime-3.9.tar.gz - compilers and tools: binutils-2.15.91-20040904-1.tar.gz gcc-core-3.4.2-20040916-1.tar.gz gcc-g++-3.4.2-20040916-1.tar.gz gdb-6.3-2.exe mingw32-make-3.80.0-3.tar.gz unzip-5.51-1-bin.zip (this is not from MinGW, iirc) msysDTK-1.0.1.exe (contains ssh, perl) bash-3.1-MSYS-1.0.11-snapshot.tar.bz2 - additional libraries: zlib-1.2.3-mingwPORT-1.tar w32api-3.6.tar.gz tcltk-8.4.1-1.exe (for gitk, git-gui) libiconv-1.9.2-1-{lib,bin,lib}.zip (for git-am, from http://gnuwin32.sourceforge.net/packages/libiconv.htm) I am using these settings in config.mak to have pointers to the right tools: TCL_PATH=tclsh84 TCLTK_PATH=wish84 SHELL_PATH=D:/MSYS/1.0/bin/sh PERL_PATH=D:/MSYS/1.0/bin/perl STATUS ------ This code base will not compile on a POSIX system, although any help to introduce the necessary #ifdefs is welcome. As such the status quo is in no way intended to be merged upstream. This works: - All the plumbings. - Many porcelains, in particular, checkout, add, rm, commit, diff, branch, merge, rebase, log, show, bisect, grep... - pull, clone, fetch, push via native git protocal as well as ssh. - Local pull, clone, fetch, push. - gitk, if invoked as "wish84 \bin\gitk". Ditto for git-gui. This does not work: - daemon, svn, *import, cvs* - and certainly a lot more that I never have found a need to look at. Caveats (aka bugs): - Internally, the ported tools must do their own command line quoting when other plumbings are executed. This sort of quoting is currently implemented *very* simplistic: It just watches out for whitespace and double quote `"' characters. This may become a problem if you have exotic characters in your file names. - It seems that MSYS's default bash, 2.05b, has a bug that breaks git-am (and, hence, git-rebase). If you see this error: Patch is empty. Was is split wrong? you need bash 3.1: Just unpack bash-3.1*.tar.bz2 and copy its bash.exe over $MSYS/bin/sh.exe.