【发布时间】:2014-03-08 01:16:59
【问题描述】:
我正在尝试将某些项目从一个 SVN 迁移到另一个。两个存储库都有其他具有多个修订版的项目。 我正在尝试将项目及其提交历史从一个存储库移动到另一个存储库。修订号并不重要,理想情况下,我只想复制过去一年的提交历史,因为我们不需要更多,而且我认为复制整个历史会太耗时。
我查看了 svnsync,但我认为它不符合我的目的,因为新存储库不是从 0 开始的
【问题讨论】:
标签: svn tortoisesvn
我正在尝试将某些项目从一个 SVN 迁移到另一个。两个存储库都有其他具有多个修订版的项目。 我正在尝试将项目及其提交历史从一个存储库移动到另一个存储库。修订号并不重要,理想情况下,我只想复制过去一年的提交历史,因为我们不需要更多,而且我认为复制整个历史会太耗时。
我查看了 svnsync,但我认为它不符合我的目的,因为新存储库不是从 0 开始的
【问题讨论】:
标签: svn tortoisesvn
要将存储库转储为特定格式,请使用:
$ svnadmin dump $REPO_DIR > dumpfile
您可以使用svndumpfilter 指定要转储的内容:
$ svnadmin dump $REPO_DIR | svndumpfilter include $REPOPREFIX > dumpfile
这样,您只会丢弃您想要的项目。
当你得到你的转储文件时,你可以使用svnadmin load 来加载它:
$ svnadmin load $REPO_PATH < dumpfile
问题是您无法将旧存储库加载到现有目录。在这种情况下,您可能必须指定--parent-dir:
$ svnadmin load --parent-dir /second_repo < dumpfile
完成加载后,您可以将该目录移动到另一个位置。
有关详细信息,请参阅Migrating Repository Data Elsewhere 上的在线 Subversion 手册。
【讨论】:
如果修订的数量很少(少于 20 个),那么我会手动进行。更新到旧版本,将文件复制到新版本并提交。重复 50 次。
您可以创建一个脚本,其中包含将更新旧工作副本的修订列表,并在循环中执行更新/复制/提交过程。
在 TortoiseSVN 安装文件夹中有命令行应用程序 svn 和 svnlook 可以帮助您制作上述脚本。
【讨论】: