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.
I've also output a message as suggested by Andreas Ericsson.
Signed-off-by: Andy Parkins <andyparkins@gmail.com> --- git-commit.sh | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-)
Show changes to git-commit.sh +8 −0
diff --git a/git-commit.sh b/git-commit.sh index 81c3a0c..fabfeae 100755 --- a/git-commit.sh +++ b/git-commit.sh @@ -265,6 +265,14 @@ $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" ]; then + echo "Nothing to commit but changes in working tree. Assuming 'git commit -a'" + all=t +fi + ################################################################ # Sanity check options
-- 1.4.4.1.g3ece-dirty