HowToRelease: Modify to reflect new release process 'official git.git + patches'
[git/jnareb-git.git] / share / WinGit / HowToRelease.txt
blobde99498429f865e44cf5fad6e65d32c5ddabc815
1 How to create a Windows Release
2 ===============================
4 A setup executable is named as follows
5  - it starts with Git;
6  - followed by the official git version if the release is closely
7    related to a specific version of official git;
8  - followed by
9     * preview<date>, for snapshot builds.
10     * winrc#, if we reach a certain quality level and plan to release
11       a stable version.  If no bugs are found, this can be upgraded
12       to a stable release.  We use winrc instead of simply rc to avoid
13       confusion with official release candidates.  The prefix "win"
14       clearly indicates that the tag is about the Windows release.
16 Examples:
18 Git-preview20080313.exe
19 Git-1.5.4-preview20071014.exe
20 Git-1.5.4-winrc3.exe
21 Git-1.5.4.exe
23 We'll not necessary release a stable version for each official version
24 number. If we merge changes from git.git we will adjust the number.
25 We will continue releasing previews until we have reached sufficient
26 stability.
28 The following criteria should be met before we go stable.
29     * features equivalent to official git-#-#-# are available in Git Bash.
30     * [DONE] safe crlf handling.
31     * good support for case insensitive filesystems.
32     * [DONE] git-gui works if run from Git Bash.
33     * [DONE] git-gui works if run from Start Menu.
34     * [DONE] git and git-gui available from Windows Command Prompt (cmd shell).
35     * server functionality (git-daemon, git-shell, ...) _not_ necessarily
36       supported.
37     * git-cheetah _not_ needed.
39 For now we should only release previews.
41 A release is created from official git.git plus a number of patches
42 that are not yet in upstream.  Since 1.6.0, most of the MinGW port is
43 included in Junio's official git.git.  A few patches, however, are not
44 yet included.  Those patches are maintained as a branch 'release' that
45 is regularily rebased onto Junio's master.  A msysgit release is
46 tagged by a tag having a postfix '-msysgit<number>'.
48 He are the step by step instructions for the maintainer:
50    cd /git
51    git fetch mingw
52    git fetch junio
53    git checkout devel
54    git merge mingw/master
55    git merge junio/master
56    make -k test | tee test.log
57    # check test.log
58    git checkout release
59    git rebase junio/master
60    # check that differences between devel and release
61    # are only trivial ones, i.e. tests, that do not
62    # change the released binaries.
63    make clean
64    make install
65    git push . devel:master  # should fast-forward
66    git tag -a <version>-msysgit1
68    cd /doc/git/html
69    git fetch
70    git checkout origin/html
72    cd /share/WinGit
73    git checkout devel
74    start ReleaseNotes.rtf # edit and save
75    git commit -a
76    git push . devel:master
77    git tag -a -m "Git-<version>" Git-<version>
78    ./release.sh <version>
80    # test installer
81    # upload to Google code (verify sha1)
82    cd /git
83    git push
84    cd /
85    git push
86    git push Git-<version>  # don't forget to push tag
88    # reply to Junio's announcement.
89    # The subject of your email should start with [ANNOUNCE].