Mercurial > emacs
annotate admin/notes/bzr @ 112341:1bdb2b6bdebb
* admin/notes/bzr: Add some more bzrmerge details.
author | Glenn Morris <rgm@gnu.org> |
---|---|
date | Mon, 17 Jan 2011 18:22:36 -0800 |
parents | aee2f052ef17 |
children | 49c0a3b6d624 |
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 |
112338
aee2f052ef17
* notes/bzr (Installing changes from gnulib): New section.
Paul Eggert <eggert@cs.ucla.edu>
parents:
112274
diff
changeset
|
42 * Installing changes from gnulib |
aee2f052ef17
* notes/bzr (Installing changes from gnulib): New section.
Paul Eggert <eggert@cs.ucla.edu>
parents:
112274
diff
changeset
|
43 Some of the files in Emacs are copied from gnulib. To synchronize |
aee2f052ef17
* notes/bzr (Installing changes from gnulib): New section.
Paul Eggert <eggert@cs.ucla.edu>
parents:
112274
diff
changeset
|
44 these files from the version of gnulib that you have checked out into |
aee2f052ef17
* notes/bzr (Installing changes from gnulib): New section.
Paul Eggert <eggert@cs.ucla.edu>
parents:
112274
diff
changeset
|
45 a sibling directory of your branch, type "make sync-from-gnulib"; this |
aee2f052ef17
* notes/bzr (Installing changes from gnulib): New section.
Paul Eggert <eggert@cs.ucla.edu>
parents:
112274
diff
changeset
|
46 will check out the latest version of gnulib if there is no sibling |
aee2f052ef17
* notes/bzr (Installing changes from gnulib): New section.
Paul Eggert <eggert@cs.ucla.edu>
parents:
112274
diff
changeset
|
47 directory already. It is a good idea to run "bzr status" afterwards, |
aee2f052ef17
* notes/bzr (Installing changes from gnulib): New section.
Paul Eggert <eggert@cs.ucla.edu>
parents:
112274
diff
changeset
|
48 so that if a gnulib module added a file, you can record the new file |
aee2f052ef17
* notes/bzr (Installing changes from gnulib): New section.
Paul Eggert <eggert@cs.ucla.edu>
parents:
112274
diff
changeset
|
49 using "bzr add". After synchronizing from gnulib, do a "make" in the |
aee2f052ef17
* notes/bzr (Installing changes from gnulib): New section.
Paul Eggert <eggert@cs.ucla.edu>
parents:
112274
diff
changeset
|
50 usual way. |
aee2f052ef17
* notes/bzr (Installing changes from gnulib): New section.
Paul Eggert <eggert@cs.ucla.edu>
parents:
112274
diff
changeset
|
51 |
aee2f052ef17
* notes/bzr (Installing changes from gnulib): New section.
Paul Eggert <eggert@cs.ucla.edu>
parents:
112274
diff
changeset
|
52 To change the set of gnulib modules, change the GNULIB_MODULES |
aee2f052ef17
* notes/bzr (Installing changes from gnulib): New section.
Paul Eggert <eggert@cs.ucla.edu>
parents:
112274
diff
changeset
|
53 variable in the top-level Makefile.in, and then run: |
aee2f052ef17
* notes/bzr (Installing changes from gnulib): New section.
Paul Eggert <eggert@cs.ucla.edu>
parents:
112274
diff
changeset
|
54 |
aee2f052ef17
* notes/bzr (Installing changes from gnulib): New section.
Paul Eggert <eggert@cs.ucla.edu>
parents:
112274
diff
changeset
|
55 ./config.status |
aee2f052ef17
* notes/bzr (Installing changes from gnulib): New section.
Paul Eggert <eggert@cs.ucla.edu>
parents:
112274
diff
changeset
|
56 make sync-from-gnulib |
aee2f052ef17
* notes/bzr (Installing changes from gnulib): New section.
Paul Eggert <eggert@cs.ucla.edu>
parents:
112274
diff
changeset
|
57 bzr status |
aee2f052ef17
* notes/bzr (Installing changes from gnulib): New section.
Paul Eggert <eggert@cs.ucla.edu>
parents:
112274
diff
changeset
|
58 |
aee2f052ef17
* notes/bzr (Installing changes from gnulib): New section.
Paul Eggert <eggert@cs.ucla.edu>
parents:
112274
diff
changeset
|
59 The last command will mention files that may need to be added using |
aee2f052ef17
* notes/bzr (Installing changes from gnulib): New section.
Paul Eggert <eggert@cs.ucla.edu>
parents:
112274
diff
changeset
|
60 "bzr add". If you remove a gnulib module, or if a gnulib module |
aee2f052ef17
* notes/bzr (Installing changes from gnulib): New section.
Paul Eggert <eggert@cs.ucla.edu>
parents:
112274
diff
changeset
|
61 removes a file, then remove the corresponding files by hand. |
aee2f052ef17
* notes/bzr (Installing changes from gnulib): New section.
Paul Eggert <eggert@cs.ucla.edu>
parents:
112274
diff
changeset
|
62 |
112273
d074b0e8afef
* admin/notes/bzr: Add an idiot's guide to merging between branches.
Glenn Morris <rgm@gnu.org>
parents:
108641
diff
changeset
|
63 * 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
|
64 |
d074b0e8afef
* admin/notes/bzr: Add an idiot's guide to merging between branches.
Glenn Morris <rgm@gnu.org>
parents:
108641
diff
changeset
|
65 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
|
66 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
|
67 |
d074b0e8afef
* admin/notes/bzr: Add an idiot's guide to merging between branches.
Glenn Morris <rgm@gnu.org>
parents:
108641
diff
changeset
|
68 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
|
69 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
|
70 |
d074b0e8afef
* admin/notes/bzr: Add an idiot's guide to merging between branches.
Glenn Morris <rgm@gnu.org>
parents:
108641
diff
changeset
|
71 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
|
72 |
d074b0e8afef
* admin/notes/bzr: Add an idiot's guide to merging between branches.
Glenn Morris <rgm@gnu.org>
parents:
108641
diff
changeset
|
73 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
|
74 |
d074b0e8afef
* admin/notes/bzr: Add an idiot's guide to merging between branches.
Glenn Morris <rgm@gnu.org>
parents:
108641
diff
changeset
|
75 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
|
76 |
d074b0e8afef
* admin/notes/bzr: Add an idiot's guide to merging between branches.
Glenn Morris <rgm@gnu.org>
parents:
108641
diff
changeset
|
77 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
|
78 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
|
79 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
|
80 |
112341
1bdb2b6bdebb
* admin/notes/bzr: Add some more bzrmerge details.
Glenn Morris <rgm@gnu.org>
parents:
112338
diff
changeset
|
81 5) It will stop if there are any conflicts. Resolve them. |
112273
d074b0e8afef
* admin/notes/bzr: Add an idiot's guide to merging between branches.
Glenn Morris <rgm@gnu.org>
parents:
108641
diff
changeset
|
82 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
|
83 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
|
84 |
d074b0e8afef
* admin/notes/bzr: Add an idiot's guide to merging between branches.
Glenn Morris <rgm@gnu.org>
parents:
108641
diff
changeset
|
85 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
|
86 again if there are more revisions still to merge. |
112341
1bdb2b6bdebb
* admin/notes/bzr: Add some more bzrmerge details.
Glenn Morris <rgm@gnu.org>
parents:
112338
diff
changeset
|
87 Do not commit (or exit Emacs) until bzrmerge has merged all revisions! |
112273
d074b0e8afef
* admin/notes/bzr: Add an idiot's guide to merging between branches.
Glenn Morris <rgm@gnu.org>
parents:
108641
diff
changeset
|
88 |
112274
60871b0684c4
* admin/notes/bzr: More on previous.
Glenn Morris <rgm@gnu.org>
parents:
112273
diff
changeset
|
89 Before committing, check bzr status and bzr diff output. |
60871b0684c4
* admin/notes/bzr: More on previous.
Glenn Morris <rgm@gnu.org>
parents:
112273
diff
changeset
|
90 |
60871b0684c4
* admin/notes/bzr: More on previous.
Glenn Morris <rgm@gnu.org>
parents:
112273
diff
changeset
|
91 Note that ChangeLog entries are automatically merged to the top with |
60871b0684c4
* admin/notes/bzr: More on previous.
Glenn Morris <rgm@gnu.org>
parents:
112273
diff
changeset
|
92 today's date, but you still might want to check them to see that too |
60871b0684c4
* admin/notes/bzr: More on previous.
Glenn Morris <rgm@gnu.org>
parents:
112273
diff
changeset
|
93 much is not being included. |
112341
1bdb2b6bdebb
* admin/notes/bzr: Add some more bzrmerge details.
Glenn Morris <rgm@gnu.org>
parents:
112338
diff
changeset
|
94 |
1bdb2b6bdebb
* admin/notes/bzr: Add some more bzrmerge details.
Glenn Morris <rgm@gnu.org>
parents:
112338
diff
changeset
|
95 Notes: |
1bdb2b6bdebb
* admin/notes/bzr: Add some more bzrmerge details.
Glenn Morris <rgm@gnu.org>
parents:
112338
diff
changeset
|
96 |
1bdb2b6bdebb
* admin/notes/bzr: Add some more bzrmerge details.
Glenn Morris <rgm@gnu.org>
parents:
112338
diff
changeset
|
97 1) A lot that was in tramp.el in emacs-23 has moved to tramp-sh.el in |
1bdb2b6bdebb
* admin/notes/bzr: Add some more bzrmerge details.
Glenn Morris <rgm@gnu.org>
parents:
112338
diff
changeset
|
98 the trunk. If you end up with a conflict in tramp.el, the changes may |
1bdb2b6bdebb
* admin/notes/bzr: Add some more bzrmerge details.
Glenn Morris <rgm@gnu.org>
parents:
112338
diff
changeset
|
99 need to go to tramp-sh.el instead. Remember to update the file name in |
1bdb2b6bdebb
* admin/notes/bzr: Add some more bzrmerge details.
Glenn Morris <rgm@gnu.org>
parents:
112338
diff
changeset
|
100 the ChangeLog. |
1bdb2b6bdebb
* admin/notes/bzr: Add some more bzrmerge details.
Glenn Morris <rgm@gnu.org>
parents:
112338
diff
changeset
|
101 |
1bdb2b6bdebb
* admin/notes/bzr: Add some more bzrmerge details.
Glenn Morris <rgm@gnu.org>
parents:
112338
diff
changeset
|
102 2) If a file is modified in emacs-23, and deleted in the trunk, you |
1bdb2b6bdebb
* admin/notes/bzr: Add some more bzrmerge details.
Glenn Morris <rgm@gnu.org>
parents:
112338
diff
changeset
|
103 get a "contents conflict". Assuming the changes don't need to be in |
1bdb2b6bdebb
* admin/notes/bzr: Add some more bzrmerge details.
Glenn Morris <rgm@gnu.org>
parents:
112338
diff
changeset
|
104 the trunk at all, use `bzr resolve path/to/file --take-this' to keep the |
1bdb2b6bdebb
* admin/notes/bzr: Add some more bzrmerge details.
Glenn Morris <rgm@gnu.org>
parents:
112338
diff
changeset
|
105 trunk version. Prior to bzr 2.2.3, this may fail. You can just |
1bdb2b6bdebb
* admin/notes/bzr: Add some more bzrmerge details.
Glenn Morris <rgm@gnu.org>
parents:
112338
diff
changeset
|
106 delete the .OTHER etc files by hand and use bzr resolve path/to/file. |