的情况是:如何使svn diff生成该补丁适用的文件,当使用svn cp或svn mv时?
- SVN CP或MV某些文件
- 修改该文件
- SVN DIFF> mypatch
在其他机器(同一个工作拷贝,但没有改变):
- 尝试应用mypatch。
- 失败 - >尝试修改不相关的文件。
如何让svn diff生成可修补的补丁,或者干净地应用由svn diff生成的补丁在这种情况下?我无法承诺。我想保留mergeinfo(因为明显的解决方法是将文件添加为全新的文件,而不连接到前一个文件)。
的情况是:如何使svn diff生成该补丁适用的文件,当使用svn cp或svn mv时?
在其他机器(同一个工作拷贝,但没有改变):
如何让svn diff生成可修补的补丁,或者干净地应用由svn diff生成的补丁在这种情况下?我无法承诺。我想保留mergeinfo(因为明显的解决方法是将文件添加为全新的文件,而不连接到前一个文件)。
通过颠覆,您可以指定要使用的差异二进制文件以及传递给它的参数。请参阅svn diff上的the manual。
你会想从svn diff产生一个普通的补丁文件,所以你希望svn diff看起来像一个普通的diff。试试这个:概念
svn diff --diff-cmd /usr/bin/diff -x "-i -b" > mypatch
...
patch -p0 < mypatch
证明:
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
修补后的两个文件没有区别。
如果不了解具体情况,您正试图努力确定您为什么要这么做。我感觉你正试图在一个孤立的环境中进行有控制的更改,以避免影响其他用户/应用程序。
你能解决这个问题吗?
当你同意使用--reintegrate参数和rm分支将变更合并回主干时?
这 *保持合并,信息 *确定在版本控制的复制/移动和变化 *还有隔离来自其他用户的 *变化的步骤2中更可以避免不完全的变化是,你只需要添加一个问题的更多更改和更新
您是否尝试过在svn diff网页上提及的--show-copies-as-adds
选项,并在svn options页面上对此进行了描述?
如果你想在你的补丁摆脱了svn特性的同时,也为一个选项:
svn diff --patch-compatible > mypatch.diff
svn help diff
说:用这种方式创建
--patch-compatible : generate diff suitable for generic third-party
patch tools; currently the same as
--show-copies-as-adds --ignore-properties
补丁都应该以便与好的旧平原patch
实用程序兼容。
如果分支之间有属性更改,则这不起作用。 – 2009-02-10 20:59:25
这不适合我。生成的补丁文件仍然将复制的文件显示为对原始文件的修改(例如,它具有以 - 开头的行以及不以 - 或+开头的行)。此外,尝试进行修补会产生:“14块中的12块失败 - 将拒绝文件保存到文件”。您是否尝试过使用实际具有内容的源文件以及内容与源文件不同的目标文件? – 2011-01-07 13:09:08