我正在尝试创建一个在线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
答案 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
我现在能够从镜像存储库中签出代码:)