SVN存储库:如何验证复制的数据与源相同?

时间:2019-02-10 13:36:57

标签: svn copy repository verify

我将一个存储库ONE(30 GB)复制到了新创建的两个存储库中:

旧配置:

 Repositories/
   ONE/
      branches
      tags/
      trunks/

新配置:

 Repositories/
  ONE/ ...
  TWO/
       ONE/
          branches
          tags/
          trunks/

我为此使用了以下命令:

svnadmin dump D:/svn/ONE/ > ONE_dump

svnadmin load --parent-dir ONE D:/svn/TWO < ONE_dump

问题:  如何验证旧的ONE和复制的ONE中的数据源相同?

1 个答案:

答案 0 :(得分:1)

数据相同,因为repository dump streams专为存储库数据迁移而设计。但是,请使用最新的Subversion LTS版本加载旧的转储(我猜是早于1.8.x的版本)。在https://subversion.apache.org/packages.html上找到操作系统的二进制发行版。

对事物有非常偏执的看法,您可以编写脚本来证明新旧存储库之间没有差异。这是一个示例过程:

  1. 从两个存储库中将匹配修订的内容导出到不同的目录中:

    svn export --revision X file:///C:\Repositories\ONE C:\OLD-REPO

    svn export --revision Y file:///C:\Repositories\TWO\ONE C:\NEW-REPO

    请注意,X和Y修订版号将有所不同。由于您已将数据加载到已经进行了某些修订的现有存储库中,因此数字将发生变化。

  2. 区分目录:

    svn diff --old C:\OLD-REPO --new C:\NEW-REPO

    看不到输出?这意味着内容相同。

  3. 重复步骤1和2。

上面的方法不是很方便,我想这将非常耗时又占空间。那如何比较文字差异呢?这是一个替代过程,它可以更快并且不会占用太多磁盘空间:

  1. 将匹配的修订版X和Y的差异保存到两个文本文件中:

    svn diff file:///C:\Repositories\ONE --revision X > X-rev.diff

    svn diff file:///C:\Repositories\TWO\ONE --revision Y > Y-rev.diff

  2. 区分这些文件:

    svn diff --old X-rev.diff --new Y-rev.diff

    看不到输出?这意味着这些修订中引入的文本更改是相同的。因此,内容本身也应该相同。我不确定如何调整此特定指令以使用二进制内容(照片,视频和其他非文本内容)。