diff options
Diffstat (limited to 'git-parse-remote.sh')
| -rwxr-xr-x | git-parse-remote.sh | 28 | 
1 files changed, 24 insertions, 4 deletions
diff --git a/git-parse-remote.sh b/git-parse-remote.sh index c9b899e3d7..187f0883c9 100755 --- a/git-parse-remote.sh +++ b/git-parse-remote.sh @@ -10,7 +10,10 @@ get_data_source () {  		# Not so fast.	This could be the partial URL shorthand...  		token=$(expr "z$1" : 'z\([^/]*\)/')  		remainder=$(expr "z$1" : 'z[^/]*/\(.*\)') -		if test -f "$GIT_DIR/branches/$token" +		if test "$(git-repo-config --get "remote.$token.url")" +		then +			echo config-partial +		elif test -f "$GIT_DIR/branches/$token"  		then  			echo branches-partial  		else @@ -18,7 +21,10 @@ get_data_source () {  		fi  		;;  	*) -		if test -f "$GIT_DIR/remotes/$1" +		if test "$(git-repo-config --get "remote.$1.url")" +		then +			echo config +		elif test -f "$GIT_DIR/remotes/$1"  		then  			echo remotes  		elif test -f "$GIT_DIR/branches/$1" @@ -35,6 +41,15 @@ get_remote_url () {  	case "$data_source" in  	'')  		echo "$1" ;; +	config-partial) +		token=$(expr "z$1" : 'z\([^/]*\)/') +		remainder=$(expr "z$1" : 'z[^/]*/\(.*\)') +		url=$(git-repo-config --get "remote.$token.url") +		echo "$url/$remainder" +		;; +	config) +		git-repo-config --get "remote.$1.url" +		;;  	remotes)  		sed -ne '/^URL: */{  			s///p @@ -56,8 +71,10 @@ get_remote_url () {  get_remote_default_refs_for_push () {  	data_source=$(get_data_source "$1")  	case "$data_source" in -	'' | branches | branches-partial) +	'' | config-partial | branches | branches-partial)  		;; # no default push mapping, just send matching refs. +	config) +		git-repo-config --get-all "remote.$1.push" ;;  	remotes)  		sed -ne '/^Push: */{  			s///p @@ -111,8 +128,11 @@ canon_refs_list_for_fetch () {  get_remote_default_refs_for_fetch () {  	data_source=$(get_data_source "$1")  	case "$data_source" in -	'' | branches-partial) +	'' | config-partial | branches-partial)  		echo "HEAD:" ;; +	config) +		canon_refs_list_for_fetch \ +			$(git-repo-config --get-all "remote.$1.fetch") ;;  	branches)  		remote_branch=$(sed -ne '/#/s/.*#//p' "$GIT_DIR/branches/$1")  		case "$remote_branch" in '') remote_branch=master ;; esac  | 
