【问题标题】:SVN: how to compare working copy with repository revision?SVN:如何将工作副本与存储库修订进行比较?
【发布时间】:2011-06-23 01:12:57
【问题描述】:

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

svn diff -r HEAD 向我倾泻了大量信息,很难快速理解。

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

svn update 不支持--dry-run

简而言之,我需要svn status 之类的东西,但是将当前工作副本与存储库修订版进行比较(我将与 HEAD 修订版进行比较)。

我查看了 SVN 手册,但不幸的是:-/

【问题讨论】:

    标签: svn version-control repository


    【解决方案1】:

    试试

    svn status --show-updates
    

    svn status-u(或--show-updates)选项使svn 联系存储库并显示存储库中更改的内容- 这对您来说足够了吗?根据您的需要,您可能还需要 -q--verbose 标志

    【讨论】:

    • 我可以比较两个版本吗?不支持svn status -r4:5
    • 还是换个话题?
    • @Azat '*' 表示存储库中有更新的版本
    • @Azat 如果您需要查看在任意修订之间更改了哪些文件,请参阅 stackoverflow.com/questions/167371/…
    • @nos: svn log -v -rX:Y . 太棒了!谢谢!
    【解决方案2】:
    svn diff -r head
    

    这将为工作副本和存储库之间不同的所有文件生成diff 列表,提供文件列表和实际更改。正如您所说,这可能很难理解。

    所以试试这个:

    svn diff -r head --diff-cmd meld
    

    这做同样的事情,但使用meld 显示更改(您可以在您的武器库中提供任何其他可视差异工具),这更易于管理。

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

    svn status -u 
    

    会给你一个修改过的文件列表,然后:

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

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

    【讨论】:

    • 很好,谢谢。这正是我一直在寻找的答案。 Meld 具有很好的比较整个目录的能力,您知道以这种方式将 SVN 工作副本发送到该程序的方法吗?这样我们就可以预览整个结构。
    • @kdopen,为反对票道歉。尽管我对删除我的一个答案感到很生气,但我并没有亲自投反对票。:DI 有一位非常有创意的朋友来访,他(知道我很生气)使用这种情况以及我无人看管的计算机和帐户对我进行了精心的恶作剧和否决了许多答案。我必须说这很幼稚,但一个真正聪明的恶作剧显然是为了让我在 StackOverflow 社区中拥抱自己。 :D 至少我希望有人对我的帐户开怀大笑。 :D
    • 嗯,看起来系统已经纠正了。尽量不要让审查系统影响到你。当您达到 500 名声望(从现在起大约 3 个赞)时,您会发现自己也开始排长队 - 然后您意识到您只需要关注规则,而不用担心人们对您的评论有何看法。我每天都会收到很多负面评论的人的评论——随着时间的推移,我自己的东西也被评论和删除了。这就是让我们与 Quora 之类的混乱网站区分开来的原因
    【解决方案3】:

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

    见:http://blogs.collab.net/subversion/2007/03/computing_the_d/

    【讨论】:

      【解决方案4】:

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

      svn diff > ~/svndiff.txt
      

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

      【讨论】:

        【解决方案5】:

        这可能是您正在寻找的:

        svn diff -r HEAD --summarize

        【讨论】:

          【解决方案6】:

          操作:

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

          像 OP 一样,我希望看到项目分支的当前工作副本的“svn 状态”样式报告,这些分支嵌套在针对其最新主干的较大 svn 存储库下方,并且我想使用相同的路径和修订参数svn diff 使用。

          以下是这样做的:

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-07-15
            相关资源
            最近更新 更多