X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=git-pull.sh;h=e23beb685d15447ac114c58d1795ed15bef88c9d;hb=d5db6c9ee79cfa1794d75847b8376430f08b203f;hp=4611ae644e08e4ab115633ab86f1f02976663169;hpb=0825de892f1796e6ca6ac81e0af10f6c136a9f1d;p=git.git diff --git a/git-pull.sh b/git-pull.sh index 4611ae644..e23beb685 100755 --- a/git-pull.sh +++ b/git-pull.sh @@ -8,7 +8,7 @@ USAGE='[-n | --no-summary] [--no-commit] [-s strategy]... [] /dev/null) +git-fetch --update-head-ok --reflog-action=pull "$@" || exit 1 -curr_head=$(git-rev-parse --verify HEAD) +curr_head=$(git-rev-parse --verify HEAD 2>/dev/null) if test "$curr_head" != "$orig_head" then # The fetch involved updating the current branch. @@ -56,7 +58,7 @@ then echo >&2 "Warning: fetch updated the current branch head." echo >&2 "Warning: fast forwarding your working tree from" - echo >&2 "Warning: $orig_head commit." + echo >&2 "Warning: commit $orig_head." git-update-index --refresh 2>/dev/null git-read-tree -u -m "$orig_head" "$curr_head" || die 'Cannot fast-forward your working tree. @@ -78,6 +80,11 @@ case "$merge_head" in exit 0 ;; ?*' '?*) + if test -z "$orig_head" + then + echo >&2 "Cannot merge multiple branches into empty head" + exit 1 + fi var=`git-repo-config --get pull.octopus` if test -n "$var" then @@ -93,11 +100,20 @@ case "$merge_head" in ;; esac +if test -z "$orig_head" +then + git-update-ref -m "initial pull" HEAD $merge_head "" && + git-read-tree --reset -u HEAD || exit 1 + exit +fi + case "$strategy_args" in '') strategy_args=$strategy_default_args ;; esac -merge_name=$(git-fmt-merge-msg <"$GIT_DIR/FETCH_HEAD") -git-merge $no_summary $no_commit $strategy_args "$merge_name" HEAD $merge_head +merge_name=$(git-fmt-merge-msg <"$GIT_DIR/FETCH_HEAD") || exit +git-merge "--reflog-action=pull $*" \ + $no_summary $no_commit $squash $strategy_args \ + "$merge_name" HEAD $merge_head