summaryrefslogtreecommitdiffstats
path: root/git-pull.sh
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2013-06-27 23:29:52 +0200
committerJunio C Hamano <gitster@pobox.com>2013-06-27 23:29:52 +0200
commit833cd7fc9fed8568a3612e9b1b204290b0f0e15d (patch)
treeca145ec8b6e1b0376504a4faa8f6f2bafdfcedeb /git-pull.sh
parentMerge branch 'bc/http-keep-memory-given-to-curl' (diff)
parentpull: merge into unborn by fast-forwarding from empty tree (diff)
downloadgit-833cd7fc9fed8568a3612e9b1b204290b0f0e15d.tar.xz
git-833cd7fc9fed8568a3612e9b1b204290b0f0e15d.zip
Merge branch 'jk/pull-into-dirty-unborn'
"git pull" into nothing trashed "local changes" that were in the index, and this avoids it. * jk/pull-into-dirty-unborn: pull: merge into unborn by fast-forwarding from empty tree pull: update unborn branch tip after index
Diffstat (limited to 'git-pull.sh')
-rwxr-xr-xgit-pull.sh11
1 files changed, 9 insertions, 2 deletions
diff --git a/git-pull.sh b/git-pull.sh
index 638aabb7b3..6828e2c715 100755
--- a/git-pull.sh
+++ b/git-pull.sh
@@ -266,10 +266,17 @@ case "$merge_head" in
;;
esac
+# Pulling into unborn branch: a shorthand for branching off
+# FETCH_HEAD, for lazy typers.
if test -z "$orig_head"
then
- git update-ref -m "initial pull" HEAD $merge_head "$curr_head" &&
- git read-tree -m -u HEAD || exit 1
+ # Two-way merge: we claim the index is based on an empty tree,
+ # and try to fast-forward to HEAD. This ensures we will not
+ # lose index/worktree changes that the user already made on
+ # the unborn branch.
+ empty_tree=4b825dc642cb6eb9a060e54bf8d69288fbee4904
+ git read-tree -m -u $empty_tree $merge_head &&
+ git update-ref -m "initial pull" HEAD $merge_head "$curr_head"
exit
fi