我正忙于一个项目,在该项目中我使用商业 SVN 提供商来存储源代码。客户最终选择的网络主机包含一个存储库作为托管包的一部分,因此,既然项目已经结束,我想将存储库重新定位到他们的网络主机并停止商业帐户。
我该如何去做呢?
最佳答案
如果您想移动存储库并保留历史记录,您可能需要两台主机上的文件系统访问权限。如果您的后端是 FSFS(最新版本的默认设置),最简单的解决方案是制作整个存储库文件夹的文件系统副本。
如果您有 Berkley DB 后端,如果您不确定您的后端是什么,或者您要更改 SVN 版本号,您将需要使用 svnadmin 转储旧存储库并加载它到你的新存储库中。使用 svnadmin dump 将为您提供一个文件备份,您可以将其复制到新系统。然后,您可以创建新的(空)存储库并使用 svnadmin load ,这实际上将重放所有提交及其元数据(作者、时间戳等)。
您可以在此处阅读有关转储/加载过程的更多信息:
http://svnbook.red-bean.com/en/1.8/svn.reposadmin.maint.html#svn.reposadmin.maint.migrate
此外,如果您执行 svnadmin load
,请确保使用 --force-uuid
选项,否则人们在切换到新存储库时会遇到问题。 Subversion 使用 UUID 在内部识别存储库,并且它不会让您将工作副本切换到不同的存储库。
如果您没有文件系统访问权限,可能有其他第三方选项(或者您可以编写一些内容)来帮助您迁移:本质上您必须使用 svn 日志在新版本上重播每个修订版存储库,然后修复元数据。您需要 pre-revprop-change 和 post-revprop-change Hook 脚本来执行此操作,这假定了文件系统访问权限,所以 YMMV。或者,如果您不想保留历史记录,可以使用工作副本导入到新存储库中。但希望情况并非如此。
关于svn - 如何导出(然后导入)Subversion 存储库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49450/