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
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
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.