2009-11-07 88 views
15

什麼是設置現有svn倉庫的只讀git鏡像的最佳方式,並設置post-commit掛鉤,以便每當有人提交svn時,git鏡像會自動更新?主要是,我想在服務器上運行git-svn clone一次,然後讓人們從git中檢出,而不必git-svn自己克隆整個svn庫。svn倉庫的只讀git鏡像

回答

4

我這樣做的項目,使用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)。

+0

謝謝,使用github似乎要走的路 – 2009-11-08 13:50:29

2

設置Svn/Git鏡像(可寫入)的最佳方法是使用SubGit - 這是專門爲此任務開發的工具。免責聲明:我是這個工具的開發者。

+0

美麗,謝謝 – 2012-01-06 00:42:04

+1

此外,SubGit 2.0不再需要本地訪問Subversion存儲庫,也可以構建遠程Subversion存儲庫的可寫Git鏡像(請參閱http:// subgit.com/eap)。 – 2012-11-26 21:48:39

+2

@AlexanderKitaev請注意,您必須在鏈接到產品或其他網站時披露您的聯繫。我從[這篇文章](http://stackoverflow.com/a/13288270/2057919)看到你開發了SubGit。我編輯了這個答案來反映這一點。將來,如果您鏈​​接到SubGit,請務必提及您的連接。 – 2016-01-19 18:03:10