web commit by http://ethan.betacantrips.com/: svn hates me
authorjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>
Wed, 17 Jan 2007 04:11:59 +0000 (04:11 +0000)
committerjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>
Wed, 17 Jan 2007 04:11:59 +0000 (04:11 +0000)
doc/patchqueue/merge_patch.mdwn [new file with mode: 0644]

diff --git a/doc/patchqueue/merge_patch.mdwn b/doc/patchqueue/merge_patch.mdwn
new file mode 100644 (file)
index 0000000..2dcd991
--- /dev/null
@@ -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