diff-tree -r -t: include added/removed directories in the output
[gitweb.git] / git-pull.sh
index 6afd4e2f4e5859728d748fe51f68e5bfcb934488..664fe34419e9aeef1af8fac820cc423a641f5525 100755 (executable)
@@ -107,9 +107,9 @@ error_on_no_merge_candidates () {
 }
 
 test true = "$rebase" && {
-       git update-index --refresh &&
-       git diff-files --quiet &&
-       git diff-index --cached --quiet HEAD -- ||
+       git update-index --ignore-submodules --refresh &&
+       git diff-files --ignore-submodules --quiet &&
+       git diff-index --ignore-submodules --cached --quiet HEAD -- ||
        die "refusing to pull with rebase: your working tree is not up-to-date"
 
        . git-parse-remote &&
@@ -124,7 +124,7 @@ orig_head=$(git rev-parse --verify HEAD 2>/dev/null)
 git fetch --update-head-ok "$@" || exit 1
 
 curr_head=$(git rev-parse --verify HEAD 2>/dev/null)
-if test "$curr_head" != "$orig_head"
+if test -n "$orig_head" && test "$curr_head" != "$orig_head"
 then
        # The fetch involved updating the current branch.
 
@@ -172,7 +172,7 @@ esac
 
 if test -z "$orig_head"
 then
-       git update-ref -m "initial pull" HEAD $merge_head "" &&
+       git update-ref -m "initial pull" HEAD $merge_head "$curr_head" &&
        git read-tree --reset -u HEAD || exit 1
        exit
 fi