svn - 如何导出(然后导入)Subversion 存储库?

标签 svn

我正忙于一个项目,在该项目中我使用商业 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/

相关文章:

svn - 如何阻止访问我的网络服务器上的 .svn/entries?

visual-studio - Visual Studio 中用于 TortoiseSVN 的差异/合并工具

git - 创建 git 存储库时如何忽略所有 svn、bin 和 obj 文件夹?

svn - 无法在 Mac 中使用 git-svn

windows - TortoiseSVN 降级问题从 1.8 到 1.7

svn - Subversion 能否正确处理两个方向的合并(主干 <-> 分支)?

svn - TortoiseSVN统计信息中作者身份的百分比是多少?

eclipse - Subversion 或 subclipse - 如何获取已 checkout 文件的列表?

svn - git-svn SVN 作者文件的相对路径?

svn - 如何使用TortoiseSVN将文件还原到以前的版本?