* admin/notes/bzr: Add an idiot's guide to merging between branches.
[bpt/emacs.git] / admin / notes / bzr
CommitLineData
51603dab
GM
1NOTES ON COMMITTING TO EMACS'S BAZAAR REPO -*- outline -*-
2
3* Install changes only on one branch, let them get merged elsewhere if needed.
4In particular, install bug-fixes only on the release branch (if there
5is one) and let them get synced to the trunk; do not install them by
6hand on the trunk as well. E.g. if there is an active "emacs-23" branch
7and you have a bug-fix appropriate for the next Emacs-23.x release,
8install it only on the emacs-23 branch, not on the trunk as well.
9
10Installing things manually into more than one branch makes merges more
11difficult.
12
13http://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").
16Label 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
18to the trunk.
19
20http://lists.gnu.org/archive/html/emacs-devel/2010-05/msg00262.html
21
22* Installing changes from your personal branches.
23If your branch has only a single commit, or many different real
24commits, it is fine to do a merge. If your branch has only a very
25small number of "real" commits, but several "merge from trunks", it is
26preferred that you take your branch's diff, apply it to the trunk, and
27commit directly, not merge. This keeps the history cleaner.
28
5739cdd2
EZ
29In general, when working on some feature in a separate branch, it is
30preferable not to merge from trunk until you are done with the
31feature. Unless you really need some change that was done on the
32trunk while you were developing on the branch, you don't really need
33those merges; just merge once, when you are done with the feature, and
34Bazaar will take care of the rest. Bazaar is much better in this than
35CVS, so interim merges are unnecessary.
36
51603dab
GM
37Or use shelves; or rebase; or do something else. See the thread for
38yet another fun excursion into the exciting world of version control.
39
40http://lists.gnu.org/archive/html/emacs-devel/2010-04/msg00086.html
9aafb22b
GM
41
42* How to merge changes from emacs-23 to trunk
43
44The following description uses bound branches, presumably it works in
45a similar way with unbound ones.
46
471) Get clean, up-to-date copies of the emacs-23 and trunk branches.
48Check for any uncommitted changes with bzr status.
49
502) M-x cd /path/to/trunk
51
523) load admin/bzrmerge.el
53
544) M-x bzrmerge RET /path/to/emacs-23 RET
55
56It will prompt about revisions that should be skipped, based on the
57regexp in bzrmerge-missing. If there are more revisions that you know
58need skipping, you'll have to do that by hand.
59
605) It will stop if there are any conflicts. Resolve them.
61Using smerge-mode, there are menu items to skip to the next conflict,
62and to take either the trunk, branch, or both copies.
63
646) After resolving all conflicts, you might need to run the command
65again if there are more revisions still to merge.
66You can commit either before you do this (eg if you had a lot of
67conflicts to resolve and don't want to get confused), or refrain from
68committing until bzrmerge has merged all revisions.
69