svn存储库的只读git镜像

svn存储库的只读git镜像,svn,git,post-commit,Svn,Git,Post Commit,设置现有svn存储库的只读git镜像,并设置提交后挂钩(post-commit hook)以便在有人提交svn时自动更新git镜像的最佳方法是什么?主要是,我想在服务器上只运行一次git svn clone,然后让人们从git签出,而不必git svn自己克隆整个svn存储库。我在使用svn的项目上这样做(推送到github上的公共存储库)。我没有SVN提交钩子,但在cron作业上: #!/bin/bash repo=/path/to/my-mirror.git lockfile="$repo

设置现有svn存储库的只读git镜像,并设置提交后挂钩(post-commit hook)以便在有人提交svn时自动更新git镜像的最佳方法是什么?主要是,我想在服务器上只运行一次git svn clone,然后让人们从git签出,而不必git svn自己克隆整个svn存储库。

我在使用svn的项目上这样做(推送到github上的公共存储库)。我没有SVN提交钩子,但在cron作业上:

#!/bin/bash

repo=/path/to/my-mirror.git
lockfile="$repo/cron-lock"

if ! lockfile -r1 "$lockfile";then
        exit 1
fi

export GIT_DIR=$repo
# update refs/remotes/git-svn:
git svn fetch -q
# make 'master' match the git-svn branch:
git fetch "$repo" refs/remotes/git-svn:refs/heads/master
# publish to github
git push github master

rm -f "$lockfile"
如果从SVN提交钩子而不是cron作业触发此操作,它应该可以工作


当然,您需要使用
git remote add github[…]
设置一个名为
github
的远程设备。我正在使用的git存储库是一个“裸”存储库(请参见
git init--bare
)。

设置Svn/git镜像(可写)的最佳方法是使用—这是专门为此任务开发的工具。免责声明:我是此工具的开发者。

此外,SubGit 2.0不再需要本地访问Subversion存储库,也可以构建远程Subversion存储库的可写Git镜像(请参阅)。@AlexanderKitaev请注意,在链接到产品或其他网站时,您必须披露您的从属关系。我看到你开发了SubGit。我编辑了这个答案以反映这一点。将来,如果您链接到SubGit,请务必提及您的连接。