diff options
-rw-r--r-- | doc/patchqueue/merge_patch.mdwn | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/doc/patchqueue/merge_patch.mdwn b/doc/patchqueue/merge_patch.mdwn new file mode 100644 index 000000000..2dcd9914e --- /dev/null +++ b/doc/patchqueue/merge_patch.mdwn @@ -0,0 +1,62 @@ +svn's merge command has three twisty little syntaxes, none +very DWIM-ish. For merging one file, apparently it is helpful +to specify that file itself. [This patch][] does that. + +[This patch]: http://ikidev.betacantrips.com/patches/merge.patch + +The bug that this fixes is hard to demonstrate without +generating a lot of noise, but you can get the idea by +finding a file that was committed in a subdirectory and +merging a change with it. + + [apu]$ emacs one/test.mdwn + [apu]$ svn add one/test.mdwn + A one/test.mdwn + [apu]$ svn commit -m "Another test case for merging." + Adding one/test.mdwn + Transmitting file data . + Committed revision 42. + [apu]$ emacs one/test.mdwn + [apu]$ svn commit -m "Change." + Sending one/test.mdwn + Transmitting file data . + Committed revision 43. + svn merge -r38:39 ~/ikidevwc/patches/merge.patch + [apu]$ svn merge -r42:43 one/test.mdwn + svn: Cannot replace a directory from within + [apu]$ svn merge -r42:43 ~/ikidevwc/one/test.mdwn + svn: Cannot replace a directory from within` + +CGI.pm does a command much like the last one. However: + + [apu]$ svn merge -r43:42 ~/ikidevwc/one/test.mdwn + svn: Cannot replace a directory from within + [apu]$ svn merge -r43:42 ~/ikidevwc/one/test.mdwn ~/ikidevwc/one/test.mdwn + U /home/glasserc/ikidevwc/one/test.mdwn + +In other words, merging works only when you specify +the file, or, alternately: + + [apu]$ cd one + [apu]$ svn merge -r42:43 ~/ikidevwc/one/test.mdwn + G test.mdwn + +... if you're in the same directory as the file. Note that if +a file called "test.mdwn" happens to be where you are, it'll get +changed! I think this is what is meant in `svn help merge` when +it says: + + If WCPATH is omitted, a default value of '.' is assumed, unless + the sources have identical basenames that match a file within '.': + in which case, the differences will be applied to that file. + +So, to conclude: when merging two revisions of a file, either specify +the file, or be in the same directory as a file with the same name. +This patch makes the former always happen, whereas previously the +second would sometimes not happen. It also obviates the call to chdir. + +Source: [this message][] on the svn-user list. + +[this message]: http://svn.haxx.se/users/archive-2005-03/0926.shtml + +--Ethan
\ No newline at end of file |