]> git.ipfire.org Git - thirdparty/git.git/blobdiff - git-commit.sh
git-revert with conflicts to behave as git-merge with conflicts
[thirdparty/git.git] / git-commit.sh
index 22c4ce86c3cc5b35fab27bbe9e75dbe334f58534..8ac8dcc34821b514b814d33287b74e391467f87f 100755 (executable)
@@ -60,26 +60,6 @@ report () {
 }
 
 run_status () {
-    (
-       # We always show status for the whole tree.
-       cd "$TOP"
-
-       IS_INITIAL="$initial_commit"
-       REFERENCE=HEAD
-       case "$amend" in
-       t)
-               # If we are amending the initial commit, there
-               # is no HEAD^1.
-               if git-rev-parse --verify "HEAD^1" >/dev/null 2>&1
-               then
-                       REFERENCE="HEAD^1"
-                       IS_INITIAL=
-               else
-                       IS_INITIAL=t
-               fi
-               ;;
-       esac
-
        # If TMP_INDEX is defined, that means we are doing
        # "--only" partial commit, and that index file is used
        # to build the tree for the commit.  Otherwise, if
@@ -96,91 +76,14 @@ run_status () {
            export GIT_INDEX_FILE
        fi
 
-       case "$branch" in
-       refs/heads/master) ;;
-       *)  echo "# On branch $branch" ;;
-       esac
-
-       if test -z "$IS_INITIAL"
-       then
-           git-diff-index -M --cached --name-status \
-               --diff-filter=MDTCRA $REFERENCE |
-           sed -e '
-                   s/\\/\\\\/g
-                   s/ /\\ /g
-           ' |
-           report "Updated but not checked in" "will commit"
-           committable="$?"
-       else
-           echo '#
-# Initial commit
-#'
-           git-ls-files |
-           sed -e '
-                   s/\\/\\\\/g
-                   s/ /\\ /g
-                   s/^/A /
-           ' |
-           report "Updated but not checked in" "will commit"
-
-           committable="$?"
-       fi
-
-       git-diff-files  --name-status |
-       sed -e '
-               s/\\/\\\\/g
-               s/ /\\ /g
-       ' |
-       report "Changed but not updated" \
-           "use git-update-index to mark for commit"
-
-        option=""
-        if test -z "$untracked_files"; then
-            option="--directory --no-empty-directory"
-        fi
-       if test -f "$GIT_DIR/info/exclude"
-       then
-           git-ls-files -z --others $option \
-               --exclude-from="$GIT_DIR/info/exclude" \
-               --exclude-per-directory=.gitignore
-       else
-           git-ls-files -z --others $option \
-               --exclude-per-directory=.gitignore
-       fi |
-       perl -e '$/ = "\0";
-           my $shown = 0;
-           while (<>) {
-               chomp;
-               s|\\|\\\\|g;
-               s|\t|\\t|g;
-               s|\n|\\n|g;
-               s/^/#   /;
-               if (!$shown) {
-                   print "#\n# Untracked files:\n";
-                   print "#   (use \"git add\" to add to commit)\n";
-                   print "#\n";
-                   $shown = 1;
-               }
-               print "$_\n";
-           }
-       '
-
-       if test -n "$verbose" -a -z "$IS_INITIAL"
-       then
-           git-diff-index --cached -M -p --diff-filter=MDTCRA $REFERENCE
-       fi
-       case "$committable" in
-       0)
-               case "$amend" in
-               t)
-                       echo "# No changes" ;;
-               *)
-                       echo "nothing to commit" ;;
-               esac
-               exit 1 ;;
-       esac
-       exit 0
-    )
+  case "$status_only" in
+    t) color= ;;
+    *) color=--nocolor ;;
+  esac
+  git-runstatus ${color} \
+                ${verbose:+--verbose} \
+                ${amend:+--amend} \
+               ${untracked_files:+--untracked}
 }
 
 trap '
@@ -563,7 +466,7 @@ then
 elif test "$use_commit" != ""
 then
        git-cat-file commit "$use_commit" | sed -e '1,/^$/d'
-elif test -f "$GIT_DIR/MERGE_HEAD" && test -f "$GIT_DIR/MERGE_MSG"
+elif test -f "$GIT_DIR/MERGE_MSG"
 then
        cat "$GIT_DIR/MERGE_MSG"
 elif test -f "$GIT_DIR/SQUASH_MSG"
@@ -599,7 +502,7 @@ then
        GIT_AUTHOR_EMAIL=`expr "z$force_author" : '.*\(<.*\)'` &&
        test '' != "$GIT_AUTHOR_NAME" &&
        test '' != "$GIT_AUTHOR_EMAIL" ||
-       die "malformatted --author parameter"
+       die "malformed --author parameter"
        export GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL
 elif test '' != "$use_commit"
 then
@@ -635,20 +538,24 @@ fi
 PARENTS="-p HEAD"
 if test -z "$initial_commit"
 then
+       rloga='commit'
        if [ -f "$GIT_DIR/MERGE_HEAD" ]; then
+               rloga='commit (merge)'
                PARENTS="-p HEAD "`sed -e 's/^/-p /' "$GIT_DIR/MERGE_HEAD"`
        elif test -n "$amend"; then
+               rloga='commit (amend)'
                PARENTS=$(git-cat-file commit HEAD |
                        sed -n -e '/^$/q' -e 's/^parent /-p /p')
        fi
-       current=$(git-rev-parse --verify HEAD)
+       current="$(git-rev-parse --verify HEAD)"
 else
        if [ -z "$(git-ls-files)" ]; then
                echo >&2 Nothing to commit
                exit 1
        fi
        PARENTS=""
-       current=
+       rloga='commit (initial)'
+       current=''
 fi
 
 if test -z "$no_edit"
@@ -724,8 +631,8 @@ then
        fi &&
        commit=$(cat "$GIT_DIR"/COMMIT_MSG | git-commit-tree $tree $PARENTS) &&
        rlogm=$(sed -e 1q "$GIT_DIR"/COMMIT_MSG) &&
-       git-update-ref -m "commit: $rlogm" HEAD $commit $current &&
-       rm -f -- "$GIT_DIR/MERGE_HEAD" &&
+       git-update-ref -m "$rloga: $rlogm" HEAD $commit "$current" &&
+       rm -f -- "$GIT_DIR/MERGE_HEAD" "$GIT_DIR/MERGE_MSG" &&
        if test -f "$NEXT_INDEX"
        then
                mv "$NEXT_INDEX" "$THIS_INDEX"