Raimund Bauer offered this suggestion (paraphrased): "Maybe we could do git-commit -a _only_ if the index matches HEAD, and otherwise keep current behavior? So people who don't care about the index won't get tripped up, and when you do have a dirty index, you get told about it?" Johannes Schindelin pointed out that this isn't the right thing to do for an --amend, so that is checked for. Additionally, it's probably not the right thing to do if any files are specified with "--only" or "--include", so they turn this behaviour off as well. Nguyen Thai Ngoc Duy asked that git-commit let you know it's done this by adding an extra comment to the commit message. Signed-off-by: Andy Parkins <andyparkins@xxxxxxxxx> --- This time we also inhibit if "all" mode is already set; if the user has specified "-a" we don't need to tell them that we've switched "-a" mode on. git-commit.sh | 10 ++++++++++ 1 files changed, 10 insertions(+), 0 deletions(-) diff --git a/git-commit.sh b/git-commit.sh index 81c3a0c..4552727 100755 --- a/git-commit.sh +++ b/git-commit.sh @@ -265,6 +265,16 @@ $1" done case "$edit_flag" in t) no_edit= ;; esac +# Clever commit - if this commit would do nothing, then make it an "all" +# commit +if [ -z "$(git-diff-index --cached --name-only HEAD)" \ + -a -z "$amend" -a -z "$only" -a -z "$also" -a -z "$all" ]; then + echo "# There was nothing to commit but changes were detected in the" > $GIT_DIR/SQUASH_MSG + echo "# working tree. 'git commit -a' mode activated." >> $GIT_DIR/SQUASH_MSG + echo "#" >> $GIT_DIR/SQUASH_MSG + all=t +fi + ################################################################ # Sanity check options -- 1.4.4.1.g3ece-dirty - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html