SVN 如何整理混乱的仓库

SVN 如何整理混乱的仓库

我们在 CentOS Linux 6.3 上运行着大约 5 个不同的 SVN 存储库,这些存储库运行在 SVN 1.6.11 上。上周,我被要求将我们的 SVN 服务器迁移到新服务器。我们有一个 cron 作业,每周对每个存储库进行一次完整备份,每隔一晚,我们会通过以下方式进行增量备份:(svnadmin dump -r 100-200 --incremental repo |gzip -9 > incremental_100_200.svn.gz其中 repo 是存储库的名称,100 是自上次备份以来最早的修订版本,200 是本次备份时最新的修订版本)

我将上次的完整备份完整恢复到新服务器,创建了几乎最新的存储库副本。整个星期,我计划将增量备份从旧服务器恢复到新服务器,以保持它们同步,然后在周五切换到新服务器。

不幸的是,我一定错过了几个存储库的增量恢复,不知何故没有注意到,然后我们切换到新服务器,人们继续添加文件并进行修改,向存储库添加新的修订版本。问题是,由于几个存储库缺少一些修订版本,现在新修订版本已经占用了这些修订版本号,所以我不能只从旧存储库获取增量并将其加载到新存储库中,因为现在有其他数据占用了这些修订版本。我该怎么办?

答案1

转储中的修订版本不需要加载到新存储库中与旧存储库中相同的修订版本号中。

一个简单的测试用例是一个a在 r1 中创建的文件的存储库,并b在 r2 中创建:

# svn log
------------------------------------------------------------------------
r2 | root | 2013-05-02 00:26:16 -0600 (Thu, 02 May 2013) | 1 line

add file b
------------------------------------------------------------------------
r1 | root | 2013-05-02 00:25:49 -0600 (Thu, 02 May 2013) | 1 line

add file a
------------------------------------------------------------------------

转储这些并按相反顺序加载:

# cat r2.dump | svnadmin load new
<<< Started new transaction, based on original revision 2
     * adding path : b ... done.

------- Committed new rev 1 (loaded from original rev 2) >>>

# cat r1.dump | svnadmin load new
<<< Started new transaction, based on original revision 1
     * adding path : a ... done.

------- Committed new rev 2 (loaded from original rev 1) >>>

运行良好,包括向后的时间戳和所有内容。

# svn log
------------------------------------------------------------------------
r2 | root | 2013-05-02 00:25:49 -0600 (Thu, 02 May 2013) | 1 line

add file a
------------------------------------------------------------------------
r1 | root | 2013-05-02 00:26:16 -0600 (Thu, 02 May 2013) | 1 line

add file b
------------------------------------------------------------------------

请注意,如果您加载的修订版本修改了新存储库中已修改的文件,则自加载修订版本以来的所有新更改都将被清除;您需要将这些更改重新合并回去。

相关内容