我将一个存储库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中的数据源相同?
答案 0 :(得分:1)
数据相同,因为repository dump streams专为存储库数据迁移而设计。但是,请使用最新的Subversion LTS版本加载旧的转储(我猜是早于1.8.x的版本)。在https://subversion.apache.org/packages.html上找到操作系统的二进制发行版。
对事物有非常偏执的看法,您可以编写脚本来证明新旧存储库之间没有差异。这是一个示例过程:
从两个存储库中将匹配修订的内容导出到不同的目录中:
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修订版号将有所不同。由于您已将数据加载到已经进行了某些修订的现有存储库中,因此数字将发生变化。
区分目录:
svn diff --old C:\OLD-REPO --new C:\NEW-REPO
看不到输出?这意味着内容相同。
重复步骤1和2。
上面的方法不是很方便,我想这将非常耗时又占空间。那如何比较文字差异呢?这是一个替代过程,它可以更快并且不会占用太多磁盘空间:
将匹配的修订版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
区分这些文件:
svn diff --old X-rev.diff --new Y-rev.diff
看不到输出?这意味着这些修订中引入的文本更改是相同的。因此,内容本身也应该相同。我不确定如何调整此特定指令以使用二进制内容(照片,视频和其他非文本内容)。