The Git executable being built is a native Windows application, it is not an MSYS (or Cygwin) application that uses a Unix emulation layer. Only the shell environment and some tools Git depends on are provided by MSYS. This is also the case for the msysgit project, but as it contains "msys" in its name this has always been a source of confusion.
The installer strives to supersede the existing msysgit netinstall package with some improvements that hopefully make the life of both Git for Windows developers and users much easier. In particluar, the improvements include:
Real installer: Comes with an Inno Setup based installer with uninstall capabilities instead of just a self-extracting archive.
Package management: All required packages are installed via MinGW's new mingw-get tool. This means that the installed packages can be updated independently of updates to the SDK installer, and in turn that there is no need to create a new SDK installer just because of updates to packages. You have full access to all upstream MinGW / MSYS packages in addition to custom packages provided by the Git for Windows SDK to improve the Git experience on Windows.
Execution of batch files: You can execute *.bat / *.cmd files right away without manually prefixing them with cmd.exe.
Setting up the environment
If you start from scratch without an existing MSYS environment (or Git client, for that matter) you have sort of a chicken-and-egg problem: In order to build the SDK installer or create mingw-get packages (see the next section) you need various MSYS tools like curl or wget, sed, lzma, tar, unzip. The SDK installer provides those tools, but you do not have the installer yet. The easiest way to solve this is by downloading an already existing snapshot release of the SDK installer, run it to set up the development environment, and use that environment to work on the SDK itself. To do so, select Start the development environment on the installer's final page and type at the prompt:
$ git clone https://github.com/sschuberth/gfw-msys1-sdk.git # Clone the repository (or your fork of it) $ cd gfw-msys1-sdk # Change to the working tree
Then, start hacking on the SDK! Everything in the root directory goes as-is to the installation directory as created by the SDK installer. In particular, the mgwport / msysport and catalogue / package description files for our custom MinGW / MSYS packages are in the packages subdirectory. In case you would like to update one of the packages to a more recent version or create new package, that is the place to go.
When you are done, building an up-to-date SDK installer is done by these steps:
$ ./download-mingw-get.sh # Download the most recent catalogue / package description files $ ./build-installer.sh # Create the installer
If everything went fine you should now have a file matching Git-SDK-*.exe which you can use to install the development environment including your changes.
Creating mingw-get packages
Please see the separate sdk-packages repository for details.
TODOs (roughly in order of priority)
- Upgrade Perl (to a version that includes this patch)
- Upgrade SVN libraries (requires new Perl)
- Create a new "Git for Windows" installer which also comes with mingw-get package management.
git help -awork when built-ins are removed.
- Create a 64-bit version of "Git for Windows".
- Contribute patches to MSYS back upstream.
- Capture the console output of mingw-get and show the progress in the installer GUI.