0

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

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

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

请注意 ,我执行以下操作来创建镜像 svn 存储库。

$ 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
4

2 回答 2

0

艾哈迈德,

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

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

于 2014-11-09T14:08:50.767 回答
0

我发现在使用svnsync. 如以下博客文章和文章中的第二条评论所述,通过使用以下命令转储公共存储库解决了问题:

$ 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对 new 进行普通调用destRepo

$ svnsync sync file:///pathToCreatedRepo/destRepo

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

于 2014-11-10T16:27:52.317 回答