[RFC/PATCH 2/2] get_remote_merge_branch: Support for arbitrary mapping
From: Santi Béjar <hidden>
Date: 2016-06-15 22:46:58
Subsystem:
the rest · Maintainer:
Linus Torvalds
This function is used in "git pull --rebase" to know the tracking branch. Signed-off-by: Santi Béjar <redacted> --- git-parse-remote.sh | 21 ++++++++++++--------- 1 files changed, 12 insertions(+), 9 deletions(-)
diff --git a/git-parse-remote.sh b/git-parse-remote.sh
index 5f47b18..1aa6ffe 100755
--- a/git-parse-remote.sh
+++ b/git-parse-remote.sh@@ -74,8 +74,6 @@ get_remote_merge_branch () { repo=$1 shift ref=$1 - # FIXME: It should return the tracking branch - # Currently only works with the default mapping case "$ref" in +*) ref=$(expr "z$ref" : 'z+\(.*\)')
@@ -83,13 +81,18 @@ get_remote_merge_branch () { esac expr "z$ref" : 'z.*:' >/dev/null || ref="${ref}:" remote=$(expr "z$ref" : 'z\([^:]*\):') - case "$remote" in - '' | HEAD ) remote=HEAD ;; - heads/*) remote=${remote#heads/} ;; - refs/heads/*) remote=${remote#refs/heads/} ;; - refs/* | tags/* | remotes/* ) remote= - esac + while true ; do + case "$remote" in + '' | HEAD ) remote=;; + heads/*) remote=refs/$remote;; + refs/heads/*) ;; + refs/* | tags/* | remotes/* ) remote=;; + *) remote=heads/$remote + esac - [ -n "$remote" ] && echo "refs/remotes/$repo/$remote" + [ -n "$remote" ] && + git remote tracking $repo $remote && break + case "$remote" in refs/heads/* | "" ) break ; esac + done esac }
--
1.6.3.2.406.gd6a466