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


19

我希望看到我的同事在接受即将到来的更改之前所做的更改。

所以我首先要获得状态

svn st -u

...告诉我我有一个即将到来的变化

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

我可以看到我所做的更改

svn diff localChanges.html

...但是我怎样才能localAndIncoming.html显示出已更改的内容,以及与工作副本有何不同?


不回答你的命令行的问题,但:到底,一旦你知道什么是你的工作副本不同,你可能要合并用自己的修改版本库的修改。使用某些GUI进行操作时,为什么不使用GUI来帮助您完成初始比较呢?像TortoiseSVN这样的工具可以提供这种比较。此外,像Eclipse的集成开发环境可以查看传入更改(即使没有什么合并-好的,得到一个什么样的同事已经达到一个想法)很容易,避免自动合并。
Arjan 2010年

1
是否有GUI方法可以使用TortoiseSVN查看传入的更改?
克里斯蒂安

您还希望同时比较入库ChangeChanges.html,不是吗?
拉菲·哈查杜安

Answers:



2

仅供参考svn diff,差异基于存储在.svn目录中的未修改文件,而不基于实时回购版本。

您可以运行svn updateSubversion尝试进行更新(并可能合并),然后执行svn diff,但这并不是我想的那么干净。

最后svn diff,仅在仓库上支持差异化。例:

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

默认情况下是将HEAD与传递的修订进行比较。



0

在真正下载新版本之前,您确实无法。这样的限制是最近一种新型的源代码控制变得流行的主要原因之一。这就是所谓的分散式源代码控制。
有了这个新表单,您将拥有自己的本地存储库,然后可以从主存储库中进行更改并对其进行比较,如果您不喜欢所做的更改,则可以还原自己的存储库并从那里进行。

http://mercurial.selenic.com/

是的,我知道建议您切换产品不是最佳解决方案,但这仍然是一个解决方案。


0

在新文件夹中再次签出。

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

或与您首选的3向差异(我的是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

这项工作,但是scm应该提供更集成的方式。
RDS

0

我认为

svn diff -r HEAD

几乎给你想要的。唯一的事情是+和-相对于您期望的反转。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.