From 6e6469453e1a38974e0680d12b71abae0ee3980a Mon Sep 17 00:00:00 2001 From: Kirill Smelkov Date: Mon, 22 Mar 2010 14:08:01 +0300 Subject: [PATCH] Teach Girocco to mirror http:// style SVN repos 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 962c526..f99d046 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 . -- 2.11.4.GIT