Mercurial > emacs
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 |
rev | line source |
---|---|
108637 | 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 | |
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 | 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 | |
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 |