summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 63c97ce)
raw | patch | inline | side by side (parent: 63c97ce)
author | Junio C Hamano <junkio@cox.net> | |
Mon, 1 Jan 2007 01:44:37 +0000 (17:44 -0800) | ||
committer | Junio C Hamano <junkio@cox.net> | |
Mon, 1 Jan 2007 02:53:26 +0000 (18:53 -0800) |
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>
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>
git-parse-remote.sh | patch | blob | history |
diff --git a/git-parse-remote.sh b/git-parse-remote.sh
index 144f1701553a1e2f4204a2df15e66437e0670123..d2e4c2b9aede8310879cea9c47bd3cee323f11af 100755 (executable)
--- a/git-parse-remote.sh
+++ b/git-parse-remote.sh
# 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=
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
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