在我接受传入的更改之前,我想先查看我的同事所做的更改。
所以我首先要了解一下状态
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