无法从使用svnsync创建的镜像存储库中签出代码

时间:2014-11-06 16:01:21

标签: svn mirroring svnsync

我正在尝试创建一个在线svn存储库的镜像存储库,因此我可以使源代码能够同步在线存储库中的更改。并开始检查镜像仓库中的代码。对其进行更改。

使用svnsync执行这些步骤后,在我实际执行了第一个svnsync sync命令后,没有将源代码复制到镜像仓库。

我是否误解了svnsync的使用或者我误解了所有的svn镜像机制?如何从镜像仓库中检出代码。并开始研究它?

注意 我做了以下创建镜像svn repo。

$ svnadmin create dest
$ cat <<'EOF' > dest/hooks/pre-revprop-change
#!/bin/sh
USER="$3"

if [ "$USER" = "svnsync" ]; then exit 0; fi

echo "Only the svnsync user can change revprops" >&2
exit 1
EOF

$ chmod +x dest/hooks/pre-revprop-change
$ svnsync init --username svnsync file://`pwd`/dest http://thesource/source/repos
$ svnsync sync file://`pwd`/dest

2 个答案:

答案 0 :(得分:0)

艾哈迈德

我建议不要将svn存储库视为git,你可以来回推送提交。

如果必须处理本地离线镜像,那么git-svn就是一个解决方案,但首先要仔细学习。

答案 1 :(得分:0)

我发现了使用svnsync创建镜像的步骤中缺少的步骤。如下面的blog post and the second comment in the post所述,通过使用以下命令转储公共存储库解决了该问题:

$ svnrdump dump http://sourceRepo/svn/repo > /tmp/sourceDump

我们可以选择使用-rX-rX:Y转储特定修订版本或修订版本范围。之后,我们开始使用以下命令创建镜像存储库:

$ svnadmin create destRepo
$ cat <<'EOF' > /pathToCreatedRepo/destRepo/hooks/pre-revprop-change
#!/bin/sh
USER="$3"

if [ "$USER" = "svnsync" ]; then exit 0; fi

echo "Only the svnsync user can change revprops" >&2
exit 1
EOF

$ chmod +x /pathToCreatedRepo/destRepo/hooks/pre-revprop-change

之后我们需要使用以下命令将转储文件导入新的destRepo

$ svnadmin load /pathToCreatedRepo/destRepo < /tmp/sourceDump

我们现在将使用以下命令进行同步初始化:

$ svnsync initialize --allow-non-empty file:///pathToCreatedRepo/destRepo http://sourceRepo/svn/repo

注意我们必须在这里添加参数--allow-non-empty,以使SVN能够通过先前加载的现有转储进行同步。我们现在可以对新sync

进行普通的destRepo调用
$ svnsync sync file:///pathToCreatedRepo/destRepo

我现在能够从镜像存储库中签出代码:)