我最近才发现the working copy is not automatically update after a commit
。例如,远程存储库显示和Revision
是Last Changed Rev
,63
但工作副本显示它们是62
。
我不知道 SVN 为什么这样设计。网上有人说在提交之前更新工作副本是好的,尽管这并不总是必要的。但为什么不总是默认更新呢?
svn update
还可以“更新”到较早的版本。对我来说,这仅用于进行一些测试,在从 获得的较早版本上进行一些更改后,我不会提交svn update
。如果我真的想要revert to an earlier revision
,当我使用 TortoiseSVN 时有revert
一个选项(但我不知道这是否使用svn update
)。
所以我不知道 的意义svn update
是什么
提交后为什么不自动更新?
有什么意义
svn update to an earlier revision
?
答案1
您用来svn update
将工作副本更新为服务器上的最新修订版。
想想看,您可能甚至没有对存储库的写入权限,您只是签出它的副本。然后您可能希望稍后更新它以获取其他开发人员对存储库所做的最新更改。
update
通常用于更新您的工作副本。默认情况下,它会更新到服务器上的最新修订版本,但您也可以更新到特定修订版本。如果最新版本引入了问题,您可能需要这样做。然后您可能想要签出可能没有问题的早期修订版本。
答案2
首先,revert
只需恢复你的当地的更改。基本上,它会将您的工作副本置于您上次更新的状态。要更新到您作为工作副本的修订版本以外的其他修订版本,您需要该update
命令。
提交之前或之后不自动进行更新的原因可能是您可能不想费心获取整个存储库的更新。
另一个可能是:你正在处理一个文件,而同事已经提交了一个脏修复,并且你不希望你的更改与他的更改合并:你只希望你的版本存在。
有时,实际上必须在提交之前执行更新,因为您不能提交与服务器上的最新修订相冲突的内容:在这种情况下,通常您的客户端会要求您先更新。
但无论如何,我认为从概念上讲,这是两件不同的事情:更新是为了获得最后的状态,而提交是为了推动更改。在提交之前进行更新通常是一种很好的做法,但也不是必须的。