git.el: Make sure we never insert the same file twice.
authorAlexandre Julliard <julliard@winehq.org>
Tue, 8 Jan 2008 13:45:46 +0000 (14:45 +0100)
committerJunio C Hamano <gitster@pobox.com>
Wed, 9 Jan 2008 00:17:44 +0000 (16:17 -0800)
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 <julliard@winehq.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
contrib/emacs/git.el

index 9a0f03f242c22891e50df912978d4668961f34a8..c82601758050342c9369b728f931774dffea058c 100644 (file)
@@ -608,7 +608,7 @@ and returns the process output as a string."
     (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))
@@ -620,7 +620,7 @@ and returns the process output as a string."
               (setf (ewoc-data node) info)
               (setq info (pop infolist)))
             (t
-             (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)
@@ -677,7 +677,7 @@ Return the list of files that haven't been handled."
     (with-temp-buffer
       (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)))