对于类似情况有一些很好的说明,但我找不到这场灾难的说明。以前我对颠覆的了解相当多,现在我知道的更多。第一个问题,分叉的存储库有冲突。我重命名的一个文件,弄乱了重命名,并在下一个修订版中再次重命名。我还在另一个存储库中正确地重命名了它,所以我不可能只合并存储库。Subversion 非常清楚地说明了这一点。我不得不遍历原始存储库并找到有问题的修订版(1683、1684)。我使用的是 svnx GUI,所以这并不太难。这是必须精确的部分。我不得不将主存储库分成两部分。这是代码:
svnadmin dump MasterRepository -r 1:1682 > MasterRepository.svn.20140203_1.dump
svnadmin dump MasterRepository -r 1685:1751 --incremental > MasterRepository.svn.20140203_2.dump
请注意,第二个转储是增量的。也许它可以通过其他方式完成,但这是对我有用的第一件事。
接下来,仅转储拆分后来自其他存储库的修订:
/usr/bin/svnadmin dump OtherDepository -r 1624:1721 --incremental > OtherDepository.dump
现在我需要将原始存储库移到一边:
cd /Library/Server/Subversion
mv MasterRepository MasterRepository.old
在服务器上创建新的存储库:
/usr/bin/svnadmin create MasterRepository
加载三个部分存储库,首先是 Master 的第一个转储,然后是其他两个:
/usr/bin/svnadmin load MasterRepository < MasterRepository.svn.20140203_1.dump
/usr/bin/svnadmin load MasterRepository < OtherRepository.dump
/usr/bin/svnadmin load MasterRepository < MasterRepository.svn.20140203_2.dump
我仍然遇到 svnx 不想让我将原始目录用作工作副本的问题。我最终把它移到一边。签出新版本,并使用 tar 复制旧目录并将其粘贴到新目录的顶部。
tar cvf htdocs.tar htdocs
mv htdocs htdocs.old
(这里我使用 svnx 来检查工作目录,创建目录,创建 .svn 子目录,并复制存储库分支中的所有文件)
tar xvf htdocs.tar
查看 svnx,显示为已修改的文件正是正确的。可能有一种更优雅的方式来实现这一点,但我对结果很满意。