[PATCH 3/3] Teach Girocco to mirror http:// style SVN repos
- From
Kirill Smelkov <kirr@mns.spb.ru>
- Date
- Mar 22, 2010, 11:08 UTC
- Message-ID
- <b7d25a4325c26bed2351257521878109b71ad771.1269255835.git.kirr@mns.spb.ru>
- In-Reply-To
- <20100222085029.GA28744@landau.phys.spbu.ru>
From: Kirill Smelkov <kirr@landau.phys.spbu.ru>
Currently we can mirror svn:// repos, but http:// is assumed to be used for Git. Teach the tool to use svn+http:// style urls for http:// svn repositories.
This is very needed, because most SVN hosting services only provide http:// style access to their services. e.g. google code, python.org, etc...
This has not been tested on full Girocco installation - just partly. But if it works, let's also add svn+https later. --- Girocco/Util.pm | 2 +- jobd/update.sh | 2 +- taskd/clone.sh | 6 ++++-- 3 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/Girocco/Util.pm b/Girocco/Util.pm index e2f7854..969cb3c 100644 --- a/Girocco/Util.pm +++ b/Girocco/Util.pm @@ -111,7 +111,7 @@ sub valid_web_url { } sub valid_repo_url { $_ = $_[0]; - /^(http|git|svn|darcs|bzr):\/\/[a-zA-Z0-9-.:]+(\/[_\%a-zA-Z0-9.\/~-]*)?$/; + /^(http|git|svn(\+http)?|darcs|bzr):\/\/[a-zA-Z0-9-.:]+(\/[_\%a-zA-Z0-9.\/~-]*)?$/; } diff --git a/jobd/update.sh b/jobd/update.sh index e09ef95..65e0455 100755 --- a/jobd/update.sh +++ b/jobd/update.sh @@ -38,7 +38,7 @@ mail="$(config_get owner)" bang git for-each-ref --format '%(refname) %(objectname)' >.refs-before case "$url" in - svn://*) + svn://* | svn+http://*) GIT_DIR=. bang git svn fetch GIT_DIR=. bang git fetch ;; diff --git a/taskd/clone.sh b/taskd/clone.sh index cfcb3b1..e634388 100755 --- a/taskd/clone.sh +++ b/taskd/clone.sh @@ -22,8 +22,10 @@ mail="$(config_get owner)" # Initial mirror echo "Initiating mirroring..." case "$url" in - svn://*) - GIT_DIR=. git svn init -s "$url" + svn://* | svn+http://*) + # we just remote svn+ here, so svn+http://... becomes http://... + svnurl="${url#svn+}" + GIT_DIR=. git svn init -s "$svnurl" GIT_DIR=. git svn fetch # Neat Trick suggested by Miklos Vajna GIT_DIR=. git config remote.origin.url .
-- 1.7.0.2.284.gafe27d