<p>The scenario is:</p>

<ol>
<li>svn cp or mv some file</li>
<li>modify that file</li>
<li>svn diff > mypatch</li>
</ol>

<p>On other machine (same working copy, but no changes):</p>

<ol start="4">
<li>Try to apply mypatch.</li>
<li>Fail -> tries to modify unexistant file.</li>
</ol>

<p>How can I make svn diff produce patch-appliable patch, or cleanly apply patch produced by svn diff in this case? I can't commit. I would like to preserve mergeinfo (because the obvious workaround is to add the file as totally new, without connection to the previous one).</p>

With subversion, you can specify which diff binary to use, and parameters to pass to it.  See
the manual
on svn diff.
You'd want to produce a regular patch file from a svn diff, so you'd want the svn diff to look like a normal diff.  Try this:
```
```
svn diff --diff-cmd /usr/bin/diff -x "-i -b" > mypatch
...
patch -p0 < mypatch
```
```
Proof of concept:
```
```
echo "newline" >> README.txt
svn diff --diff-cmd /usr/bin/diff -x "-i -b" > mypatch
cp README.txt README.txt.patched
svn revert README.txt
patch -p0 < mypatch
diff README.txt README.txt.patched
```
```
No difference in the two files after patching.