From: Alexandre Julliard Date: Tue, 8 Jan 2008 13:45:46 +0000 (+0100) Subject: git.el: Make sure we never insert the same file twice. X-Git-Tag: v1.5.4-rc3~14 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=87e3d812943f3d9c5f9464b0aee83398dd9d028e;p=git.git 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 --- diff --git a/contrib/emacs/git.el b/contrib/emacs/git.el index 9a0f03f24..c82601758 100644 --- a/contrib/emacs/git.el +++ b/contrib/emacs/git.el @@ -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)))