“ svn日志”未显示所有最近的提交


72

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

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

在下面回答...

Answers:


109

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


6
成功提交后不应该svn commit运行svn update良好吗?
贾汀·库玛

5
一些客户端程序实际上可以执行此操作,但是实际的“ svn commit”命令却不执行(据我所知)。这是根据“ Red Bean”用户手册(svnbook.red-bean.com/en/1.7/svn.basic.in-action.html):“ Subversion的基本规则之一是“推送”操作不会导致“拉动”,反之亦然。仅仅因为您准备向存储库提交新更改,并不意味着您就准备接收其他人的更改。” 本段的其余部分更详细地说明了为什么“ svn commit”和“ svn update”是分开的。
robguinness 2014年

修订号适用于整个SVN信息库。假设您的存储库中有多个分支。show log仅显示您的工作副本所基于的分支的修订,但显示主干和其余分支的修订。我可以在TortoiseSVN客户端上为此担保:)
Rakesh N

造成这种棘手/怪异之处的是,至少对于我的安装(和存储库),svn log需要我的密码。因此,我假设它需要命中服务器才能获取最新日志。如果没有提示输入密码,我会更容易地以为它使用的是我的工作副本日志。
Guildenstern

1
这更加令人困惑,因为“ git log”显示了本地工作副本的提交。
康拉德·霍夫纳

18

如果您希望看到完整的日志而不进行更新(就像我在处理旧版本时所做的那样),则可以运行:

svn log -r HEAD:0

或者,为便于查看:

svn log -r HEAD:0 | less

2

今天我遇到了同样的问题,以为我丢失了更改而感到震惊。

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

PS:git好多了。


1

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

例如

svn log svn://your-server/trunk

或更概括地说:

svn log ^/
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.