我使用svn部署了一个应用程序。现在我已经做了一些更改,我想运行svn update
以更新我的应用程序。
弹出svn update
个错误后弹出。但是,当我删除所有文件(包括.svn
文件夹)并执行svn checkout [repourl]
时,没有错误。
我的问题是svn update
和svn checkout [repourl]
在这种情况下有什么区别?为什么检出修订版100有效,但是从修订版50更新到修订版100产品错误。
如果您需要其他信息,请告诉我,我试着保持简短。
我看过Subversion - What are the differences between the SVN checkout and SVN update commands?,但这并没有帮我找到答案。
答案 0 :(得分:0)
为了更好地理解,我们可以通过两个逻辑步骤中断[SVNBook]: svn checkout:
svn update
[SVNBook]: svn update从服务器下载(如果没有另行说明)最新状态(称为 revision - 这是一个通过每次修改都会增加的数字)的存储库(基于 svn元数据)。它还将更新 svn元数据。
这就是为什么svn checkout
(svn co
)仅使用一次(在开始时),并且从那里开始后续的 WC 更新通过{{1 (svn update
)。
由于svn up
创建(覆盖) svn元数据,然后更新 WC ,它将始终成功,但由于外部因素(用户)可能会从创建的那一刻起弄乱元数据,因此发生svn co
(或任何其他 svn 命令) ,svn up
可能会失败。
svn元数据:
svn up
是恢复的唯一方法svn co
),您不必指定它(与svn up
一样)因为它从元数据中获取它您的 WC 包含文件夹树(包含文件夹和文件)。所有那棵树也被复制了#34;在 svn元数据( .svn 文件夹)中 - 这就是它占用这么多空间的原因。因此,如果您修改 WC 中的某个源文件,然后在其上执行svn co
(svn status
), svn 将会检测到更改和svn st
将显示它们(以 diff 格式)和,而不连接到 svn 服务器。此外,显示文件随时间(svn diff
)遭受的所有修改都不需要连接到服务器。
我认为现在为什么svn log
"总是"成功。关于" 运行svn更新错误后弹出",没有关于错误的详细信息,我无法告诉您更多信息。我想到了可能导致错误的两种情况:
svn co
)到 svn 服务器。当您svn commit
时, svn 不知道如何组合这些更改(他们和您的更改),因此需要用户干预。这是不是错误,而是冲突并经常发生(如果许多人在同一区域工作)。需要解决冲突(两组更改合并一起),确保保留两个功能。svn up
), svn 进程异常终止:例如 Ctrl + C ( ^ C )或 ^ Break , WC 处于错误状态(锁定)状态。不允许进一步操作直到它恢复正常(svn up
)。