比服务器更高版本的 SVN 客户端
SVN client with higher rev than server
由于人为错误,我们不得不从备份中恢复服务器上的 svn 数据。备份已存在 1 天。
当有人使用比服务器版本更高的版本号提交时会发生什么?我们应该如何调解这个问题?
刚刚使用本地存储库对此进行了测试。我创建了一个包含几个提交的存储库,创建了存储库文件夹的备份副本,添加了另一个提交,然后用旧的备份副本替换了存储库文件夹。
将存储库恢复到其旧状态(使用旧修订)后,行为如下:
- 具有更新版本的工作副本将不再能够 运行
svn update
或 svn log
。他们将收到一条错误消息:"svn: E160006: No such revision xxx".
- 但是,工作副本将能够发送新的提交。服务器将从它的角度为提交分配下一个 SVN 修订版 - 然而,其他工作副本不会使用
svn up
获取此提交,因为它们已经有一个具有该修订号的(不同的)提交。因此,工作副本会有所不同。
TL;DR:
Subversion不支持。必须丢弃所有现有的工作副本(并重新签出)。
如果工作副本有未提交的更改,则应保存这些更改(例如使用 svn diff
- 但要注意移动文件等限制)并重新应用到新签出。
由于人为错误,我们不得不从备份中恢复服务器上的 svn 数据。备份已存在 1 天。
当有人使用比服务器版本更高的版本号提交时会发生什么?我们应该如何调解这个问题?
刚刚使用本地存储库对此进行了测试。我创建了一个包含几个提交的存储库,创建了存储库文件夹的备份副本,添加了另一个提交,然后用旧的备份副本替换了存储库文件夹。
将存储库恢复到其旧状态(使用旧修订)后,行为如下:
- 具有更新版本的工作副本将不再能够 运行
svn update
或svn log
。他们将收到一条错误消息:"svn: E160006: No such revision xxx". - 但是,工作副本将能够发送新的提交。服务器将从它的角度为提交分配下一个 SVN 修订版 - 然而,其他工作副本不会使用
svn up
获取此提交,因为它们已经有一个具有该修订号的(不同的)提交。因此,工作副本会有所不同。
TL;DR:
Subversion不支持。必须丢弃所有现有的工作副本(并重新签出)。
如果工作副本有未提交的更改,则应保存这些更改(例如使用 svn diff
- 但要注意移动文件等限制)并重新应用到新签出。