summaryrefslogtreecommitdiff
path: root/git-parse-remote.sh
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2005-09-26 05:54:23 (GMT)
committerJunio C Hamano <junkio@cox.net>2005-09-28 23:22:00 (GMT)
commit05dd8e2ee2ecba1b4ef1dbbde5c81281152604b4 (patch)
treea47668b32b27c0244faa7a9c186fad14f83c6b07 /git-parse-remote.sh
parent3e03aaf523331d4f3e92e680f75e6053d1813b64 (diff)
downloadgit-05dd8e2ee2ecba1b4ef1dbbde5c81281152604b4.zip
git-05dd8e2ee2ecba1b4ef1dbbde5c81281152604b4.tar.gz
git-05dd8e2ee2ecba1b4ef1dbbde5c81281152604b4.tar.bz2
Fix default pull not to do an unintended Octopus.
The refspecs specified in the .git/remotes/<remote> on the "Pull: " lines are for fetching multiple heads in one go, but most of the time making an Octopus out of them is not what is wanted. Make git-fetch leave the marker in .git/FETCH_HEAD file so that later stages can tell which heads are for merging and which are not. Tom Prince made me realize how stupid the original behaviour was. Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'git-parse-remote.sh')
-rwxr-xr-xgit-parse-remote.sh11
1 files changed, 9 insertions, 2 deletions
diff --git a/git-parse-remote.sh b/git-parse-remote.sh
index a9db0cd..4d8a572 100755
--- a/git-parse-remote.sh
+++ b/git-parse-remote.sh
@@ -65,8 +65,11 @@ get_remote_default_refs_for_push () {
esac
}
-# Subroutine to canonicalize remote:local notation
+# Subroutine to canonicalize remote:local notation.
canon_refs_list_for_fetch () {
+ # Leave only the first one alone; add prefix . to the rest
+ # to prevent the secondary branches to be merged by default.
+ dot_prefix=
for ref
do
force=
@@ -91,7 +94,8 @@ canon_refs_list_for_fetch () {
heads/* | tags/* ) local="refs/$local" ;;
*) local="refs/heads/$local" ;;
esac
- echo "${force}${remote}:${local}"
+ echo "${dot_prefix}${force}${remote}:${local}"
+ dot_prefix=.
done
}
@@ -107,6 +111,9 @@ get_remote_default_refs_for_fetch () {
echo "refs/heads/${remote_branch}:refs/heads/$1"
;;
remotes)
+ # This prefixes the second and later default refspecs
+ # with a '.', to signal git-fetch to mark them
+ # not-for-merge.
canon_refs_list_for_fetch $(sed -ne '/^Pull: */{
s///p
}' "$GIT_DIR/remotes/$1")