>> @@ -944,6 +944,8 @@ vc-git-checkin >> (let ((default-directory (file-name-directory file1))) >> (make-nearby-temp-file "git-msg"))))) >> (when vc-git-patch-string >> + (unless (eq (vc-git-command nil t nil "diff" "--cached" "--quiet") 0) >> + (error "Index not empty")) > > user-error, maybe? Will be fixed. >> (let ((patch-file (make-temp-file "git-patch"))) >> (with-temp-file patch-file >> (insert vc-git-patch-string)) > > Looking great otherwise. Please install whenever you think it's ready. Not yet great :) I tried to fix another long-standing problem because its solution should also define the names of new functions here. The problem is that currently using 'C-c C-d' (log-edit-show-diff) in the *vc-log* buffer doesn't show the same diff that will be really committed when different files were marked in *vc-dir* parent buffer before typing 'C-c C-c' in *vc-log*. This is because currently log-edit-diff-function is set to vc-diff that is not suitable here since it tries to deduce fileset again from *vc-dir*, but files to commit are set in the buffer-local 'vc-log-fileset' in *vc-log*. So I added a new function 'log-edit-diff-fileset' that shows the diff from 'vc-log-fileset'. Using the same naming scheme, I renamed 'vc-diff-patch' to 'log-edit-diff-patch'. This shows the difference from the previous patch, but later these changes could be committed separately: