当前位置:  开发笔记 > 前端 > 正文

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

如何解决《如何导出(然后导入)Subversion存储库?》经验,为你挑选了6个好方法。

我刚刚结束了一个项目,我正在使用商业SVN提供程序来存储源代码.客户最终选择的Web主机包括作为托管包的一部分的存储库,因此,现在项目已经结束,我想将存储库重新定位到他们的Web主机并停止商业帐户.

我该怎么做呢?



1> Tadmas..:

如果要移动存储库并保留历史记录,则可能需要在两台主机上进行文件系统访问.最简单的解决方案是,如果您的后端是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钩子脚本来执行此操作,这类型假定文件系统访问,因此YMMV.或者,如果您不想保留历史记录,则可以使用工作副本导入新存储库.但希望事实并非如此.


从1.7开始,您现在可以使用svnrdump,它不需要远程存储库的管理员权限.命令很简单:`svnrdump dump https // remote/svn/trunk> repos.dump`.在大多数情况下,该命令也适用于SVN 1.6,但可能存在一些问题,请参阅docs.适用于*nix和Windows.

2> tkdave..:

rsvndump 我很好地将存储库从svnrepository.com迁移到我控制的Ubuntu服务器.

如何在Ubuntu上安装和使用rsvndump:

    安装缺少的依赖项("APR"和Subversion库)

    sudo apt-get install apache2-threaded-dev
    sudo apt-get install libsvn-dev
    

    安装rsvndump

    wget http://prdownloads.sourceforge.net/rsvndump/rsvndump-0.5.5.tar.gz
    tar xvfz rsvndump-0.5.5.tar.gz
    cd rsvndump-0.5.5
    ./configure
    make
    sudo make install
    

    将远程SVN存储库转储到本地文件

    rsvndump http://my.svnrepository.com/svn/old_repo > old_repo_dump
    

    创建一个新存储库并加载到本地转储文件中

    sudo svnadmin create /opt/subversion/my_new_rep
    sudo svnadmin load --force-uuid /opt/subversion/my_new_repo < old_repo_dump
    


然后,迁移现有的工作副本:`svn switch --relocate http://my.svnrepository.com/svn/old_repo http:// newserver.com/svn/my_new_repo`

3> Sander Rijke..:

您也可以使用svnsync.这仅需要源存储库上的只读访问权限

更多在svnbook


见http://blog.uncommons.org/2010/05/17/moving-projects-from-java-net-to-github/

4> Gishu..:

摘自我的Blog-Note-to-myself
现在您可以导入转储文件,例如,如果您要在机器/ subversion版本之间进行迁移.例如,如果我从源存储库创建了一个转储文件并将其加载到新的存储库中,如下所示.

CmdShell> svnadmin dump D:\CoderZone2\svn-repos > ReposDump.dmp
CmdShell> svnadmin load D:\CoderZone\svn-repos < ReposDump.dmp



5> pilif..:

这样做的工具就是

svnadmin dump

但要实现这一点,您需要对存储库进行文件系统访问.一旦你拥有了(并且存储库是FSFS格式),你可以只将存储库复制到新的位置(如果它是BDB格式,强烈建议使用dump/load).

如果您没有文件系统访问权限,则必须要求您的存储库提供程序为您提供转储(并使它们删除其存储库 - 并希望它们符合要求)



6> Ray..:

如果您没有对存储库的文件访问权限,我更喜欢rsvndump(远程Subversion存储库转储)来生成转储文件.

推荐阅读
ifx0448363
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有