Alexandre Julliard  committed 87e3d81

git.el: Make sure we never insert the same file twice.

Skip non-zero stage files during git-ls-files -c, they are handled
later. Also fix git-insert-info-list to merge duplicate file names.

Signed-off-by: Alexandre Julliard <>
Signed-off-by: Junio C Hamano <>

  • Participants
  • Parent commits d8c3794

Comments (0)

Files changed (1)

File contrib/emacs/git.el

     (while info
       (setf (git-fileinfo->needs-refresh info) t)
       (cond ((not node)
-             (ewoc-enter-last status info)
+	     (setq node (ewoc-enter-last status info))
              (setq info (pop infolist)))
             ((string-lessp (git-fileinfo->name (ewoc-data node))
                            (git-fileinfo->name info))
               (setf (ewoc-data node) info)
               (setq info (pop infolist)))
-             (ewoc-enter-before status node info)
+	     (setq node (ewoc-enter-before status node info))
              (setq info (pop infolist)))))))
 (defun git-run-diff-index (status files)
       (apply #'git-call-process-env t nil "ls-files" "-z" "-s" "-c" "--" files)
       (goto-char (point-min))
-      (while (re-search-forward "\\([0-7]\\{6\\}\\) [0-9a-f]\\{40\\} [0-3]\t\\([^\0]+\\)\0" nil t)
+      (while (re-search-forward "\\([0-7]\\{6\\}\\) [0-9a-f]\\{40\\} 0\t\\([^\0]+\\)\0" nil t)
 	(let* ((new-perm (string-to-number (match-string 1) 8))
 	       (old-perm (if (eq default-state 'added) 0 new-perm))
 	       (name (match-string 2)))