Skip to content
This repository has been archived by the owner on Aug 16, 2018. It is now read-only.

sschuberth/gfw-msys1-sdk

Repository files navigation

Build status

Note: This project is more or less deprecated in favor of the MSYS2-based Git SDK installer that is being created as part of the Git for Windows organization.

Introduction

This is the Git for Windows SDK, provided by an Inno Setup based wrapper around MinGW's mingw-get which installs a development environment based on MSYS for building Git for Windows using GCC.

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.

Features

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.

Download

Choose between the latest release or the latest snapshot.

Getting involved

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.
  • Make git help -a work 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.