SVN:如何将工作副本与存储库修订进行比较?

时间:2011-02-07 21:36:22

标签: svn version-control repository

我只想查看已修改,添加等文件的列表,不是内容svn diff输出),只有{{1}等文件列表}}

svn status抛弃了大量信息,很难快速理解。

svn diff -r HEAD仅显示将工作副本与其本地原始版本(而不是存储库版本)进行比较的更改。

svn status不支持svn update

简单地说,我需要类似--dry-run的内容,但将当前工作副本与存储库修订版进行比较(我将与HEAD修订版进行比较)。

我查看了SVN手册,但遗憾的是没有任何帮助: - /

6 个答案:

答案 0 :(得分:43)

尝试

svn status --show-updates

-u的{​​{1}}(或--show-updates)选项会导致svn联系存储库并显示存储库中已更改的内容 - 这对您来说足够了吗?根据您的需要,您可能还需要svn status-q标记

答案 1 :(得分:23)

svn diff -r head

这将为工作副本和存储库之间的所有文件生成diff列表,给出文件列表和实际更改。正如你所说,这很难理解。

所以试试这个:

svn diff -r head --diff-cmd meld

这与dos相同,但使用meld显示更改(您可以在您的库中提供任何其他视觉差异工具),这更易于管理。

但严重的是,习惯于阅读那些差异输出,因为它们构成了许多其他事物(例如补丁)的基础,并且在Linux世界中很难避免。减少输出:

svn status -u 

将为您提供已修改文件的列表,然后:

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

将为您提供您感兴趣的特定文件的视觉差异。

答案 2 :(得分:2)

你说出原始问题的方式,正确的答案是svn status -u已经给出了。根据后续评论,您还应该了解svn diff --summarize,因为这可能是您正在寻找的。这将用于比较存储库中的两个存储库修订或​​两个标记或其他内容。您无法使用此选项将工作副本与存储库进行比较(状态就是这样)。

请参阅:http://blogs.collab.net/subversion/2007/03/computing_the_d/

答案 3 :(得分:1)

这就是我所做的,它解决了我的问题:我希望看到我的工作副本和回购副本之间有什么不同。

svn diff > ~/svndiff.txt

然后我在SublimeText 2中提取了明文文件,这样我就可以更轻松地阅读它了。猜猜这是非常基本的东西,但我想发布它,因为它帮助我解决了类似的问题。

答案 4 :(得分:1)

op:

  

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

和OP一样,我希望看到&#34; svn状态&#34;项目分支的当前工作副本的样式报告,它嵌套在较大的svn存储库下面的最新主干,我想使用svn diff使用的相同路径和修订参数。

以下是:

if beacons.count > 0 {
        let sortedBeacons = beacons.sorted { (first, second) -> Bool in
            if first.accuracy == -1 || second.accuracy == -1 {
                return true
            }
            return first.accuracy < second.accuracy
        }
        let beacon = sortedBeacons[0]

        if beacon.major.intValue == helperMajorValue && beacon.accuracy < 2.5 {
            if beacon.accuracy != -1 {
                if triggeredMajor == 0 {
                    counter += 1
                } else if abs((helperMajorValue - triggeredMajor)) < 3 {
                    counter += 1
                }
            }
        } else {
            counter = 0
            helperMajorValue = beacon.major.intValue
        }
            if counter > 4 {
                counter = 0
                print("majorValue: \(beacon.major.intValue) distance: \(beacon.accuracy)")
                if beacon.accuracy < 2.5 {
                    startNavigation = true
                    majorValue = helperMajorValue
                    triggered = false
                }
            }

            if majorValue == 171 {
                //call action
            } else if majorValue == 170 {
                //call action
            } else if majorValue == 172 {
                //Call action
            }}

当然,替换&#34; pathToTrunk&#34;到存储库使用的实际路径。

答案 5 :(得分:0)

这可能是您正在寻找的:

  

svn diff -r HEAD --summarize