mirror of
https://github.com/git/git
synced 2024-08-24 18:26:02 +00:00
Do not merge random set of refs out of wildcarded refs
When your fetch configuration has only the wildcards, we would pick the lexicographically first ref from the remote side for merging, which was complete nonsense. Make sure nothing except the one that is specified with branch.*.merge is merged in this case. Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
parent
63c97ce228
commit
fbc9012307
|
@ -76,16 +76,32 @@ get_remote_default_refs_for_push () {
|
|||
# from get_remote_refs_for_fetch when it deals with refspecs
|
||||
# supplied on the command line. $ls_remote_result has the list
|
||||
# of refs available at remote.
|
||||
#
|
||||
# The first token returned is either "explicit" or "glob"; this
|
||||
# is to help prevent randomly "globbed" ref from being chosen as
|
||||
# a merge candidate
|
||||
expand_refs_wildcard () {
|
||||
first_one=yes
|
||||
for ref
|
||||
do
|
||||
lref=${ref#'+'}
|
||||
# a non glob pattern is given back as-is.
|
||||
expr "z$lref" : 'zrefs/.*/\*:refs/.*/\*$' >/dev/null || {
|
||||
if test -n "$first_one"
|
||||
then
|
||||
echo "explicit"
|
||||
first_one=
|
||||
fi
|
||||
echo "$ref"
|
||||
continue
|
||||
}
|
||||
|
||||
# glob
|
||||
if test -n "$first_one"
|
||||
then
|
||||
echo "glob"
|
||||
first_one=
|
||||
fi
|
||||
from=`expr "z$lref" : 'z\(refs/.*/\)\*:refs/.*/\*$'`
|
||||
to=`expr "z$lref" : 'zrefs/.*/\*:\(refs/.*/\)\*$'`
|
||||
local_force=
|
||||
|
@ -116,7 +132,8 @@ canon_refs_list_for_fetch () {
|
|||
if test "$1" = "-d"
|
||||
then
|
||||
shift ; remote="$1" ; shift
|
||||
set x $(expand_refs_wildcard "$@")
|
||||
set $(expand_refs_wildcard "$@")
|
||||
is_explicit="$1"
|
||||
shift
|
||||
if test "$remote" = "$(get_default_remote)"
|
||||
then
|
||||
|
@ -125,6 +142,10 @@ canon_refs_list_for_fetch () {
|
|||
merge_branches=$(git-repo-config \
|
||||
--get-all "branch.${curr_branch}.merge")
|
||||
fi
|
||||
if test -z "$merge_branches" && test $is_explicit != explicit
|
||||
then
|
||||
merge_branches=..this.will.never.match.any.ref..
|
||||
fi
|
||||
fi
|
||||
for ref
|
||||
do
|
||||
|
|
Loading…
Reference in a new issue