* src/comp.c (comp_hash_string): Count bytes, not chars.
[emacs.git] / admin / release-branch.txt
blob0c393a9eccbc22b022ed6b506c5a2e32c2304049
1 Instructions for cutting the Emacs release branch
3 1.  In the clone of the Emacs Git repository, switch to the 'master'
4     branch, "git pull", and build it (using 'make bootstrap') to make
5     sure it's not broken.  Run 'make check-expensive' and ensure all
6     tests pass.  (Alternatively, verify that the automated build
7     servers are showing success for the latest revision.)
9 2.  Create the release branch and switch to it.  Assuming that it is
10     for releasing Emacs versions XY.1, XY.2, etc., the command is:
12      git checkout -b emacs-XY
14 3.  Switch the release branch to the suitable version.  The convention
15     is that release branches start with version XY.0.60, whereas the
16     master branch from which the release branch was cut was at the
17     version XY.0.50.  To change the version, do the following inside
18     Emacs:
20      M-x load-file RET admin/admin.el RET
21      M-x set-version RET XY.0.60 RET
23     Change the value of 'customize-changed-options-previous-release'
24     in cus-edit.el to reference the last release from the emacs-XY-1
25     branch (last release for the previous major version).
27     The above modifies several files in the tree; commit the changes
28     with the appropriate log message, something like "Bump Emacs
29     version to XY.0.60", and with header saying "Cut the emacs-XY
30     release branch".  Then push the changes:
32      git push --set-upstream origin emacs-XY
34     The "push" command should show the new branch just created.
36 4.  Switch back to the master branch.
38      git checkout master
39      git pull
41     Set the version on the master branch to the next major release:
43      M-x set-version RET XY+1.0.50 RET
45     This creates a new file etc/NEWS.XY.  "git add" it.
47     Change the value of 'customize-changed-options-previous-release'
48     in cus-edit.el to reference emacs-XY.1, the next version to be
49     released from the newly-committed release branch.
51     Update the emacs-module sources for the new version XY+1.  This
52     entails:
54      . adding a new file src/module-env-XY+1.h, with contents just the
55        comment taken from the beginning of src/module-env-XY.h
56      . removing the comment from the beginning of src/module-env-XY.h
57      . adding two lines to configure.ac:
59        AC_SUBST_FILE([module_env_snippet_XY+1])
60        module_env_snippet_XY+1="$srcdir/src/module-env-XY+1.h"
62      . adding a new 'struct emacs_env_XY+1' to src/emacs-module.h.in,
63        with the contents identical to'struct emacs_env_XY', with one
64        line added:
66          @module_env_snippet_XY+1@
68      (FIXME: "M-x set-version" should do this emacs-module stuff
69      automatically when the version is NN.0.60, or when there's no
70      src/module-env-NN.h file.)
72     "git add" the new src/module-env-XY+1.h file.
74     Then rebuild Emacs.  Then commit the new/changed files and push.
76 5.  Announce the new release branch on emacs-devel.