Subversion:如何比较传入更改之间的差异?

Subversion:如何比较传入更改之间的差异?

在我接受传入的更改之前,我想先查看我的同事所做的更改。

所以我首先要了解一下状态

svn st -u

...它告诉我有一项即将发生的变更

    *     9803   incomingChanges.html
M         9803   localChanges.html
M   *     9803   localAndIncoming.html

我可以看到我做了哪些改变

svn diff localChanges.html

...但是我怎样才能通过差异localAndIncoming.html来显示发生了什么变化,以及它与我的工作副本有何不同?

答案1

我相信你需要的是:

svn diff -rBASE:HEAD

答案2

仅供参考,svn diff根据存储在.svn目录中的未修改的文件给出差异,而不是基于实时 repo 版本。

您可以运行svn update以获取 subversion 来尝试更新(并可能合并)然后执行svn diff,但这并不像我想象的那么干净。

最后,svn diff它只支持 repo 上的差异。例如:

svn diff svn://svnserver/repo/localChanges.html -r REV_NO

默认将 HEAD 与传递的修订版进行比较。

答案3

乌龟(如果您使用 Windows)

  • 调用日志屏幕

  • 选择头部修订

  • 右键单击localAndIncoming.html

  • 选择与工作副本比较

答案4

在新的文件夹中进行另一次签出。

cd ..
svn checkout  /path/to/repo clean_working_copy

如果你重新使用 clean_working_copy,请不要忘记在之前进行更新

svn update clean_working_copy

然后将您的文件与 clean_working_copy 中的文件进行比较

diff your_working_copy/localAndIncoming.html clean_working_copy/localAndIncoming.html

或者使用你喜欢的三向差速器(我的是 kdiff3)

kdiff3 --L1 Base --L2 theirs --L3 mine your_working_copy/.svn/text-base/localAndIncoming.html clean_working_copy/localAndIncoming.html your_working_copy/localAndIncoming.html

相关内容