使用SVK创建SVN存储库的只读镜像

使用SVK创建SVN存储库的只读镜像

说,你有一个SVN为您的OpenSource项目,并希望将其镜像到一些远程位置承载开源项目(如SourceForge.net或dev.java.net)。 我将跳过一个帐户和项目注册阶段,并假设您已经获得了凭据和SVN报告网址。 我也假设你在Debian或Ubuntu上,你的SVN在Apache httpd下运行。

默认情况下,有一个名为svnsync的工具,默认情况下是为了完全相同的目的而设计的,但是在这种情况下有一件事情阻止我们使用它。 它需要一个自定义的svn钩子来呈现在目标存储库上,这在我们的案例中是不可能自定义的。

你所做的是先安装SVK:

# aptitude install svk

粗略地说,SVK是SVN的超集,因此允许一些高级技巧,如repo同步。 有一个版本控制与SVK书你可以参考一个深入的SVK指南。 我会保持简短。 这个概念是您创建一个SVK仓库(“仓库”),其中包含所有涉及的SVN回报的副本(您的主要回购站和转储信息的副本),然后同步这些副本。

由于我们希望每次提交时都会同步回馈,因此SVN钩子过程将被使用,在我们的情况下会发生在apache httpd用户下。

所以,为了使事情变得简单,让我们登录该帐户并执行所需的例程。

# su www-data

现在我们需要做的是初始化默认仓库。

$ svk depotmap

编辑路径以指定要存储仓库的位置。 我会选择/ var / opt / svk / local

现在,您可以创建至少2个镜像:一个用于本地备份,一个用于远程镜像(没有任何可以防止有多个镜像):

$ svk mirror //local file:///var/opt/svn

这就是我们将repo位置(名为“local”)直接映射到svn存储库所在的文件系统位置的方式。

$ svk mirror //remote https://myproject.svn.sourceforge.net/svnroot/myproject

远程回购也是如此,在这种情况下托管在SourceForge.net上。 您需要永久接受证书并提供用户名和密码以进行缓存。
由于远程回购将是只读的,我们只会将其同步一次

$ svk sync //remote

然后执行稍后由提交后脚本执行的操作。

$ svk sync //local
$ svk smerge --baseless --incremental --verbatim //local //remote

后一个命令将同步本地repo与远程保留所有提交详细信息。
为了在完成对本地repo的提交后自动完成此操作,请在本地SVN repo的钩子目录中创建一个名为post-commit的文件,并将这些命令放入其中。 使其可执行

$ chmod +x ./post-commit #considering you are in the ''hooks'' dir

就这样,看看吧。

<请注意,该教程是由>创建的

Alex Yanchenko,www.centricware.org

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏