如何让svn的差异产生的文件,补丁可以应用,使用SVN CP或svn MV什么时候?如何让svn的差

2019-05-13 05:48发布

该方案是:

  1. SVN CP或MV某些文件
  2. 修改该文件
  3. SVN DIFF> mypatch

在另一台机器(同一个工作拷贝,但没有改变):

  1. 尝试运用mypatch。
  2. 失败 - >试图修改unexistant文件。

我怎样才能让SVN差异产生的补丁,补丁appliable,或干净的应用svn DIFF在这种情况下产生的补丁? 我不能犯。 我想保持合并信息(因为显而易见的解决方法是将文件添加为全新的,无需连接到前一个)。

Answer 1:

颠覆,你可以指定要使用的DIFF二进制和参数传递给它。 请参见本手册上的svn差异。

你想生产从SVN差异常规补丁文件,所以你会希望使用svn 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

修补后的两个文件没有区别。



Answer 2:

如果你想摆脱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程序。



Answer 3:

您是否尝试过--show-copies-as-adds上提到的选项SVN DIFF网页和上描述SVN选项页面?



Answer 4:

如果不了解具体情况你想在它的努力合作,以确定为什么你要做到这一点。 我明白你试图在一个孤立的环境控制的变化,从而避免影响其他用户/应用程序的感觉。

你能解决这个问题;

  • 为您的代码更改创建一个分支
  • 在树枝上执行的复制/移动和变化
  • 获取对方切换到这个新的代码分支,并进行分享这个分支

当你既与改变约定合并到使用--reintegrate参数干线和RM分支?

这将*保持合并,信息*确定在版本控制的复制/移动和变化*还有隔离来自其他用户的变化*会第2步中防止不完全的变化是,你只需要添加更多的变化和更新的问题



文章来源: How to make svn diff produce file that patch would apply, when svn cp or svn mv was used?