在CVS中,我的工作副本(WC)位于某个分支上(我们称之为“foo”)。另一个开发者已经将其他更改检入foo。我想在我的WC和foo的上游状态之间做一个差异。通常,在主干(HEAD)中工作时,我只是做一个cvs diff,这很好。但由于某种原因,当在分支中执行普通的cvs diff时,diff是空的。当我尝试使用“cvs diff -r foo”时,差异显示,但它被反转 - 上游添加显示有缺点,上游删除显示有加号。
我怎么能:(1)让CVS以“另一种方式”进行区分(加上上游添加),或者(2)反转补丁(一般情况下)?
答案 0 :(得分:3)
也许您可以通过使用patchutils包中的interdiff来完成。
我经常以这种方式使用它来查看给定文件的TRUNK上发生的变化:
cvs diff -up -r1 givenfile | interdiff /dev/stdin /dev/null
答案 1 :(得分:2)
如果主要目的是检查中央仓库中的“内容有什么”,我建议您自己使用CVS查看器/浏览器/网络功能,您可以在更新前浏览并查看最新更改。但假设你所拥有的只是命令行CVS,我会尝试给你一个解决方案:)
所以,你在这里有一个分支foo
来自A
- > B
,其中B
是其他开发人员签到后的分支状态(在服务器上),A
是您上次更新工作副本的状态。
在这种情况下执行简单cvs diff
时,您会看到本地更改与A
进行比较,因为A
是您已检出的内容。本地CVS状态将显示每个文件来自foo分支上的A修订版,并且在区分CVS客户端时将从服务器下载该修订版。在你的情况下,我猜你没有本地更改,因为你的cvs diff
是空的。
然后,当您执行cvs diff -r foo
时,您将本地A
(或A +更改)与服务器foo
(当前位于B
)进行区分 - 从服务器的B
到A+changes
所需的更改与其他开发人员的签到完全相反,加上您自己的本地更改。
现在,如果你真的想知道B(或tip-of-foo)与A(你现在检查过的任何原始版本)的比较,我认为你要做的就是设置一个标签你的工作副本,然后将该标记与分支的状态区分开来。像这样:
cvs tag pistos_temp1
cvs diff -r pistos_temp1 -r foo
# And clean up by deleting the tag afterwards:
cvs tag -d pistos_temp1
答案 2 :(得分:0)
您可以尝试将文件从分支导出到某个临时文件,然后在工作副本和此临时文件之间进行差异。这似乎是最简单的方法。