From ccf46d5393946ccd80b6d23dd8733f8103134dcb Mon Sep 17 00:00:00 2001 From: Justin Patrin Date: Tue, 14 Aug 2012 15:32:21 -0700 Subject: [PATCH 1/2] Use $() --- git-svn-clone-externals | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/git-svn-clone-externals b/git-svn-clone-externals index 091cab3..3561151 100755 --- a/git-svn-clone-externals +++ b/git-svn-clone-externals @@ -17,8 +17,8 @@ function call() function do_clone() { test -d .git_externals || return 1 - module=`echo $remote_url|sed 's,\(.*\)\(/trunk\|/branch.*\|/tag.*\),\1,'` - branch=`echo $remote_url|sed 's,\(.*\)\(/trunk\|/branch.*\|/tag.*\),\2,'|sed 's,^/,,'` + module=$(echo $remote_url|sed 's,\(.*\)\(/trunk\|/branch.*\|/tag.*\),\1,') + branch=$(echo $remote_url|sed 's,\(.*\)\(/trunk\|/branch.*\|/tag.*\),\2,'|sed 's,^/,,') if [[ $branch = $remote_url ]]; then branch="" fi @@ -86,7 +86,7 @@ function is_excluded() { local result=0 if [ -f .git_externals_exclude ] ; then - matches=`grep -v "^#" .git_externals_exclude|grep "^/$1$"|wc -l` + matches=$(grep -v "^#" .git_externals_exclude|grep "^/$1$"|wc -l) if [ $matches -gt 0 ] ; then local result=1 fi @@ -130,7 +130,7 @@ do echo "$local_directory -> $remote_url" - dir=`dirname $local_directory` + dir=$(dirname $local_directory) [ -d ".git_externals/$dir" ] || mkdir -p ".git_externals/$dir" do_clone "$revision" "$remote_url" "$local_directory" || exit @@ -138,4 +138,4 @@ do do_excludes "$local_directory" fi -done \ No newline at end of file +done From 4d59f491b81582b0e3accdde7e404b5c2f46215a Mon Sep 17 00:00:00 2001 From: Justin Patrin Date: Tue, 14 Aug 2012 16:10:18 -0700 Subject: [PATCH 2/2] Support crazy swapped order svn:externals with a caret in them. --- git-svn-clone-externals | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/git-svn-clone-externals b/git-svn-clone-externals index 3561151..65e4c33 100755 --- a/git-svn-clone-externals +++ b/git-svn-clone-externals @@ -101,12 +101,23 @@ git svn show-externals | grep -vE '#|^$' | \ while read svn_externals do + echo $svn_externals number_fields="$(echo ${svn_externals}|awk '{print NF}')" case $number_fields in 2) - local_directory="$(echo ${svn_externals} | awk '{print $1}' | sed 's,^/,,')" + local_directory="$(echo ${svn_externals} | awk '{print $1}')" revision="" remote_url="$(echo ${svn_externals} | awk '{print $2}')" + + if echo $remote_url | grep -v '/'; then + echo "Flipped dir and url....swapping" + tmp="$local_directory" + local_directory="$remote_url" + remote_url="$tmp" + local_directory="$(echo $remote_url | sed 's,\(.*\)^.*,\1,')$local_directory" + fi + local_directory="$(echo $local_directory | sed 's,^/,,')" + ;; 3) local_directory="$(echo ${svn_externals} | awk '{print $1}' | sed 's,^/,,')" @@ -116,6 +127,18 @@ do *) continue ;; esac + if echo "$remote_url" | grep '\^'; then + echo "Relative remote URL, munging" + orig_remote_url="$remote_url" + remote_url="$(git svn info|grep '^Repository Root:'|awk '{print $3}')$(echo "$remote_url" | sed 's,^.*\^,,')" + echo "$orig_remote_url -> $remote_url" + fi + + while echo "$remote_url" | grep '/../'; do + echo "Remote URL has /../, collapsing" + remote_url="$(echo $remote_url | sed 's,[^/]*/../,,')" + done + check_excluded=$(is_excluded $local_directory) if [ $check_excluded -eq 0 ] ; then if [ -n "$USE_SSH" ]; then