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



我正在尝试创建一个在线svn存储库的镜像存储库,这样我就可以拥有能够同步在线repo上更改的源代码。并开始从镜像回购中签出代码。对其进行更改。

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

我是误解了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

Ahmed,

我建议不要像git那样处理svn存储库,在git中可以来回推送/拉取提交。

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

我发现了使用svnsync创建镜像的步骤中缺少的步骤。如以下博客文章和文章中的第二条评论所述,通过使用以下命令转储公共存储库解决了问题:

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

我们可以选择性地使用CCD_ 6或CCD_。之后,我们开始使用以下命令创建镜像存储库:

$ 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能够在先前加载的现有转储上同步。我们现在可以在新的destRepo 上进行普通的sync调用

$ svnsync sync file:///pathToCreatedRepo/destRepo

我现在可以从镜像存储库中签出代码了:)

最新更新