【问题标题】:"svn log" not showing all recent commits“svn log”没有显示所有最近的提交
【发布时间】:2013-05-28 08:14:03
【问题描述】:

注意:对于有经验的 SVN 用户来说,这可能是一件轻而易举的事,但它困扰了我很长一段时间......所以希望这对像我这样的人有所帮助!

从命令行发出svn log 后,我注意到丢失了几条最近的提交消息。我知道这些消息已正确保存在我的存储库中,因为它们出现在我的 SVN 客户端 (RapidSVN) 中。我只是想不通为什么使用命令行版本的 svn 看不到它们。

下面回答...

【问题讨论】:

    标签: svn


    【解决方案1】:

    这个问题与我对svn log 所显示的内容的理解不足有关。在没有提供其他参数的情况下,它从日志的工作副本输出日志消息,而不是从实际的存储库。因此,发出svn update 将使工作副本与存储库保持同步,然后svn log 将反映所有最近的提交。呸! ;-)

    【讨论】:

    • 不应该svn commit在成功提交后也运行svn update吗?
    • 一些客户端程序实际上可能会这样做,但实际的“svn commit”命令不会(根据我的理解)。这是根据“红豆”用户手册(svnbook.red-bean.com/en/1.7/svn.basic.in-action.html):“Subversion 的基本规则之一是“推”动作不会导致“拉”,反之亦然。只是因为你准备好了向存储库提交新的更改并不意味着您已准备好接收其他人的更改。”本段的其余部分更详细地解释了为什么“svn commit”和“svn update”是分开的。
    • 修订号适用于整个 SVN 存储库。假设您的存储库中有多个分支。 show log 仅显示您的工作副本所基于的分支的修订版,但不显示 主干和其余分支的修订版。我可以在 TortoiseSVN 客户端上保证这一点:)
    • 让这件事变得棘手/奇怪的是,至少对于我的安装(和存储库)来说,svn log 需要我的密码。所以我假设它需要访问服务器才能获取最新的日志。如果它没有提示我输入密码,我会更容易假设它正在使用我的工作副本的日志。
    • 这更令人困惑,因为“git log”显示了本地工作副本的提交。
    【解决方案2】:

    如果您想在不更新的情况下查看完整日志(就像我有时在处理旧版本时所做的那样),您可以运行:

    svn log -r HEAD:0
    

    或者,为了便于查看:

    svn log -r HEAD:0 | less
    

    【讨论】:

      【解决方案3】:

      我今天遇到了同样的问题,并吓坏了,以为我丢失了更改。

      这只是因为颠覆的怪异。工作副本的概念设置为最初签出的修订版。新提交不会更改工作副本修订版。 svn update 需要更新/同步工作副本修订到存储库。不确定我是否愿意在每种情况下都这样做。

      PS:git 好多了。

      【讨论】:

        【解决方案4】:

        您还可以通过指定存储库的 URL 来明确告诉 svn log 转到服务器。

        例如

        svn log svn://your-server/trunk
        

        或者更笼统、更简洁:

        svn log ^/
        

        【讨论】:

          猜你喜欢
          • 2021-04-29
          • 2021-10-26
          • 2012-03-21
          • 2016-02-28
          • 1970-01-01
          • 2015-04-02
          • 2013-01-17
          • 2021-11-11
          • 2020-09-21
          相关资源
          最近更新 更多