* lisp/electric.el (electric-indent-post-self-insert-function):
[bpt/emacs.git] / admin / notes / bzr
1 NOTES ON COMMITTING TO EMACS'S BAZAAR REPO -*- outline -*-
2
3 * Install changes only on one branch, let them get merged elsewhere if needed.
4 In particular, install bug-fixes only on the release branch (if there
5 is one) and let them get synced to the trunk; do not install them by
6 hand on the trunk as well. E.g. if there is an active "emacs-23" branch
7 and you have a bug-fix appropriate for the next Emacs-23.x release,
8 install it only on the emacs-23 branch, not on the trunk as well.
9
10 Installing things manually into more than one branch makes merges more
11 difficult.
12
13 http://lists.gnu.org/archive/html/emacs-devel/2010-03/msg01124.html
14
15 * Backporting a bug-fix from the trunk to a branch (e.g. "emacs-23").
16 Label the commit as a backport, e.g. by starting the commit message with
17 "Backport:". This is helpful for the person merging the release branch
18 to the trunk.
19
20 http://lists.gnu.org/archive/html/emacs-devel/2010-05/msg00262.html
21
22 * Installing changes from your personal branches.
23 If your branch has only a single commit, or many different real
24 commits, it is fine to do a merge. If your branch has only a very
25 small number of "real" commits, but several "merge from trunks", it is
26 preferred that you take your branch's diff, apply it to the trunk, and
27 commit directly, not merge. This keeps the history cleaner.
28
29 In general, when working on some feature in a separate branch, it is
30 preferable not to merge from trunk until you are done with the
31 feature. Unless you really need some change that was done on the
32 trunk while you were developing on the branch, you don't really need
33 those merges; just merge once, when you are done with the feature, and
34 Bazaar will take care of the rest. Bazaar is much better in this than
35 CVS, so interim merges are unnecessary.
36
37 Or use shelves; or rebase; or do something else. See the thread for
38 yet another fun excursion into the exciting world of version control.
39
40 http://lists.gnu.org/archive/html/emacs-devel/2010-04/msg00086.html
41
42 * Installing changes from gnulib
43 Some of the files in Emacs are copied from gnulib. To synchronize
44 these files from the version of gnulib that you have checked out into
45 a sibling directory of your branch, type "make sync-from-gnulib"; this
46 will check out the latest version of gnulib if there is no sibling
47 directory already. It is a good idea to run "bzr status" afterwards,
48 so that if a gnulib module added a file, you can record the new file
49 using "bzr add". After synchronizing from gnulib, do a "make" in the
50 usual way.
51
52 To change the set of gnulib modules, change the GNULIB_MODULES
53 variable in the top-level Makefile.in, and then run:
54
55 ./config.status
56 make sync-from-gnulib
57 bzr status
58
59 The last command will mention files that may need to be added using
60 "bzr add". If you remove a gnulib module, or if a gnulib module
61 removes a file, then remove the corresponding files by hand.
62
63 * How to merge changes from emacs-23 to trunk
64
65 The following description uses bound branches, presumably it works in
66 a similar way with unbound ones.
67
68 1) Get clean, up-to-date copies of the emacs-23 and trunk branches.
69 Check for any uncommitted changes with bzr status.
70
71 2) M-x cd /path/to/trunk
72
73 3) load admin/bzrmerge.el
74
75 4) M-x bzrmerge RET /path/to/emacs-23 RET
76
77 It will prompt about revisions that should be skipped, based on the
78 regexp in bzrmerge-missing. If there are more revisions that you know
79 need skipping, you'll have to do that by hand.
80
81 5) It will stop if there are any conflicts. Resolve them.
82 Using smerge-mode, there are menu items to skip to the next conflict,
83 and to take either the trunk, branch, or both copies.
84
85 6) After resolving all conflicts, you might need to run the command
86 again if there are more revisions still to merge.
87 You can commit either before you do this (eg if you had a lot of
88 conflicts to resolve and don't want to get confused), or refrain from
89 committing until bzrmerge has merged all revisions.
90
91 Before committing, check bzr status and bzr diff output.
92
93 Note that ChangeLog entries are automatically merged to the top with
94 today's date, but you still might want to check them to see that too
95 much is not being included.