如何使用 TortoiseSVN 从文件同步混淆中恢复

How to recover from file sync mix-up with TortoiseSVN

我有一个基于文件的 TortoiseSVN 存储库,如果我需要跨多台机器工作,它要求文件保持同步(很少见......但你猜对了,这是由于大流行病的缘故)。

不可避免的事情发生了:两台不同的机器(PC1、PC2)每次提交更改,并且由于 PC2 上未检测到的同步积压而被分配相同的修订号。随后,PC2 清除了同步积压,但最终对 repo 的看法变得混乱:

PC2 似乎完全没问题,因此在 PC1 上提交的更改重新提交到那里。这会过滤到 PC1,其中修订历史正确显示最新修订,但先前修订的历史条目仍然如前所述混乱。

delete/rename 受影响的项目并重新签出似乎是一个合理的想法。结果是:

所以我卡住了。我想 .svn 文件夹中的某些内容需要删除。我怎样才能找出那个东西是什么并删除它而不丢失历史记录或影响同一存储库中的其他项目?

(据我所知,repo 根目录中有多个 projects/branches,并且有一个 .svn 文件跨越所有检出。我是 运行 TortoiseSVN 1.10.5 Windows 10...并通过使用 Cryptomator.org)

加密存储库中的所有源代码使事情进一步复杂化

This answer 为至少部分解决方案提供了基础...仔细注意 svn:externals - 有带有 svn:externals 的子文件夹,有人抱怨说“节点已经存在”(或类似的东西)。像这样的每个实例都必须单独删除,并再次更新命令运行。

在大多数情况下,其他文件夹中的现有文件已通过 SVN 更新进行了“版本化”,而不是更新。丢失的文件(或故意删除的文件)已被替换。将此应用于所有 folders/projects 导致无错误结果。

但是还有一个小怪癖:修订历史显示错误的作者和日志消息。但是,当我尝试编辑它们时,弹出对话框包含正确的 author/message。错误提交的代码更改消失了。所以在某处仍然有一些本地重复的数据,但它的效果是表面的。

我不敢尝试更新到错误的版本...