annotate admin/notes/bzr @ 112273:d074b0e8afef

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