merge script: improve log message subject
- point out remote-tracking branches as "remote branch 'upstream/master'"; - avoid misleading log messages when a tag and branch share a name. This approximates the builtin merge command's behavior well enough to pass the relevant tests. Based roughly on v1.6.4.2~10^2 (merge: indicate remote tracking branches in merge message, 2009-08-09) and v1.6.4.2~10^2~1 (merge: fix incorrect merge message for ambiguous tag/branch, 2009-08-09). Cc: Jeff King <peff@peff.net> Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jonathan Nieder committed
Aug 17, 2010 at 02:04 UTC
13dd255e4abb95895aaef72e2b93564be90cb49c
1 file changed
+19
-8
contrib/examples/git-merge.sh
+19
-8
@@ -134,21 +134,32 @@ finish () {
134
merge_name () {
135
remote="$1"
136
rh=$(git rev-parse --verify "$remote^0" 2>/dev/null) || return
137
- bh=$(git show-ref -s --verify "refs/heads/$remote" 2>/dev/null)
138
- if test "$rh" = "$bh"
139
- then
140
- echo "$rh branch '$remote' of ."
141
- elif truname=$(expr "$remote" : '\(.*\)~[1-9][0-9]*$') &&
137
+ if truname=$(expr "$remote" : '\(.*\)~[0-9]*$') &&
138
git show-ref -q --verify "refs/heads/$truname" 2>/dev/null
139
then
140
echo "$rh branch '$truname' (early part) of ."
145
- elif test "$remote" = "FETCH_HEAD" -a -r "$GIT_DIR/FETCH_HEAD"
141
+ return
142
+ fi
143
+ if found_ref=$(git rev-parse --symbolic-full-name --verify \
144
+ "$remote" 2>/dev/null)
145
+ then
146
+ if test "${found_ref#refs/heads/}" != "$found_ref"
147
+ then
148
+ echo "$rh branch '$remote' of ."
149
+ return
150
+ elif test "${found_ref#refs/remotes/}" != "$found_ref"
151
+ then
152
+ echo "$rh remote branch '$remote' of ."
153
+ return
154
+ fi
155
+ fi
156
+ if test "$remote" = "FETCH_HEAD" -a -r "$GIT_DIR/FETCH_HEAD"
157
then
158
sed -e 's/ not-for-merge / /' -e 1q \
159
"$GIT_DIR/FETCH_HEAD"
149
- else
150
- echo "$rh commit '$remote'"
160
+ return
161
fi
162
+ echo "$rh commit '$remote'"
163
}
164
165
parse_config () {