SVN:如何比较工作副本和仓库版本?

32
我只想看到已修改、添加等的文件列表,不需要内容svn diff输出的),只有像svn status的文件列表。 svn diff -r HEAD输出了大量信息,很难快速理解。 svn status仅显示将工作副本与其本地原始版本(而非仓库修订版本)进行比较的更改。 svn update不支持--dry-run
简言之,我需要类似于svn status的东西,但它是将当前的工作副本与仓库修订版本进行比较(我要和HEAD修订版本比较)。
我查阅了SVN手册,但不幸的是没有帮助到我 :-/
6个回答

46

尝试

svn status --show-updates

-u(或--show-updates)选项用于svn status命令,使svn与仓库联系,并显示在仓库中已更改的内容-这对你来说是否足够?根据您的需求,您可能还需要使用-q--verbose标志。


我能比较两个版本吗?例如,svn status -r4:5 不被支持。 - Azat
还是这是另一个话题的问题? - Azat
1
@Azat '*' 表示代码库中有更新的修订版本。 - nos
2
如果需要查看任意版本之间更改了哪些文件,请参阅 https://dev59.com/KnVC5IYBdhLWcg3w1E_w。@Azat - nos
@nos:svn log -v -rX:Y .非常好!谢谢! - Azat
不幸的是,“svn status -u” 不会与 HEAD 版本进行比较,而只会与工作副本当前所在的任何版本进行比较。请尝试以下命令:svn up -r12345; svn status -u - Ed Avis

33
svn diff -r head
这将为工作副本和存储库之间不同的所有文件生成一个diff列表,给出文件列表和实际更改。正如您所说的那样,这可能很难理解。所以尝试这个:
svn diff -r head --diff-cmd meld

这个做法和之前的一样,但是使用 meld 显示出了更加清晰的变化(你也可以使用其他可视化的 diff 工具),这样更容易管理。

但是真的,要习惯阅读这些 diff 输出,因为它们是许多其他事情的基础(例如补丁),在 Linux 的世界里很难避免。为了减少输出:

svn status -u 

该命令将给你一个修改文件列表,然后:

svn diff <file> -r head --diff-cmd <tool>

它将为您展示您感兴趣的特定文件的视觉差异。


1
太好了,谢谢。这正是我在寻找的答案。Meld有很好的比较整个目录的能力,您知道如何以这种方式将SVN工作副本发送到该程序吗?这样我们就可以预览整个结构了。 - Line
@kdopen,对于这些负评我道歉。尽管我的一个回答被删除使我很生气,但我个人并没有投票踩它。:D 我有一个非常有创意的朋友来访,他知道我生气了,就利用这种情况下我不在电脑旁边的机会,用我的账户恶作剧地踩了很多答案。我必须说这非常幼稚,但真正聪明的恶作剧显然达到了目的,让我在StackOverflow社区中难堪。:D 至少我希望有人因此开心笑了。:D - AlexRebula
好的,看起来系统已经纠正了它。尽量不要让审查系统影响你。当你达到500声望值(大约再获得3个赞),你会发现自己也开始处理队列 - 然后你会意识到你只需要专注于规则,不用担心人们对你的审查感受。我每天都收到很多来自那些遭受过负面审查的人的评论 - 我自己的东西也被审查和删除过。这就是我们与Quora等网站混乱之处的区别。 - kdopen

2
根据您最初提出的问题,已经给出了正确答案:svn status -u。根据后续评论,您还应该知道svn diff --summarize,因为这可能是您正在寻找的内容。这是您将用于比较仓库的两个修订版本、两个标记或存储库中的其他内容。您不能使用此选项将工作副本与存储库进行比较(状态可以执行此操作)。
参见:http://blogs.collab.net/subversion/2007/03/computing_the_d/

1

操作:

我只想看到已修改、添加等的文件列表,而不是内容(svn diff 输出的内容),只想看到像 svn status 那样的文件列表。

和提问者一样,我想在一个大型 svn 仓库下嵌套的项目分支中查看当前工作副本的 "svn status" 样式报告,并希望使用与 svn diff 相同的路径和修订参数。

以下是实现该功能的方法:

svn diff --old . --new ^/pathToProject/trunk --summarize

当然,将“pathToTrunk”替换为您的存储库实际使用的路径。

1
这是我所做的,它解决了我的问题:我想看看我的工作副本和仓库副本之间有什么不同。
svn diff > ~/svndiff.txt

然后我在SublimeText 2中打开了纯文本文件,以便更轻松地阅读它。虽然这可能是相当基础的内容,但考虑到它帮助我解决了类似的问题,所以我还是想发布一下。

1

这可能是您正在寻找的内容:

svn diff -r HEAD --summarize


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接