summaryrefslogtreecommitdiff
path: root/git-parse-remote.sh
diff options
context:
space:
mode:
authorSanti Béjar <santi@agolina.net>2009-06-12 00:39:18 +0200
committerJunio C Hamano <gitster@pobox.com>2009-06-11 19:49:59 -0700
commit97af7ff0553ed81bb905dbc0c8b0f9a0c10bfb3d (patch)
treef8acd8c16a79d98f64ef40aeb699428839140993 /git-parse-remote.sh
parentcb9d398c3506a6354a1c63d265a4228fcec28fda (diff)
downloadgit-97af7ff0553ed81bb905dbc0c8b0f9a0c10bfb3d.tar.gz
parse-remote: function to get the tracking branch to be merge
The only user of get_remote_refs_for_fetch was "git pull --rebase" and it only wanted the tracking branch to be merge. So, add a simple function (get_remote_merge_branch) with this new meaning. No behavior changes. The new function behaves like the old code in "git pull --rebase". In particular, it only works with the default refspec mapping and with remote branches, not tags. Signed-off-by: Santi Béjar <santi@agolina.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'git-parse-remote.sh')
-rwxr-xr-xgit-parse-remote.sh29
1 files changed, 29 insertions, 0 deletions
diff --git a/git-parse-remote.sh b/git-parse-remote.sh
index a296719861..a991564b95 100755
--- a/git-parse-remote.sh
+++ b/git-parse-remote.sh
@@ -229,6 +229,34 @@ get_remote_refs_for_fetch () {
esac
}
+get_remote_merge_branch () {
+ case "$#" in
+ 0|1)
+ die "internal error: 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+\(.*\)')
+ ;;
+ 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
+
+ [ -n "$remote" ] && echo "refs/remotes/$repo/$remote"
+ esac
+}
+
resolve_alternates () {
# original URL (xxx.git)
top_=`expr "z$1" : 'z\([^:]*:/*[^/]*\)/'`
@@ -262,3 +290,4 @@ get_uploadpack () {
;;
esac
}
+