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>
This commit is contained in:
committed by
Junio C Hamano
parent
cb9d398c35
commit
97af7ff055
@ -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
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user