提交 87e3d812 编写于 作者: A Alexandre Julliard 提交者: Junio C Hamano

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: NAlexandre Julliard <julliard@winehq.org>
Signed-off-by: NJunio C Hamano <gitster@pobox.com>
上级 d8c37945
...@@ -608,7 +608,7 @@ and returns the process output as a string." ...@@ -608,7 +608,7 @@ and returns the process output as a string."
(while info (while info
(setf (git-fileinfo->needs-refresh info) t) (setf (git-fileinfo->needs-refresh info) t)
(cond ((not node) (cond ((not node)
(ewoc-enter-last status info) (setq node (ewoc-enter-last status info))
(setq info (pop infolist))) (setq info (pop infolist)))
((string-lessp (git-fileinfo->name (ewoc-data node)) ((string-lessp (git-fileinfo->name (ewoc-data node))
(git-fileinfo->name info)) (git-fileinfo->name info))
...@@ -620,7 +620,7 @@ and returns the process output as a string." ...@@ -620,7 +620,7 @@ and returns the process output as a string."
(setf (ewoc-data node) info) (setf (ewoc-data node) info)
(setq info (pop infolist))) (setq info (pop infolist)))
(t (t
(ewoc-enter-before status node info) (setq node (ewoc-enter-before status node info))
(setq info (pop infolist))))))) (setq info (pop infolist)))))))
(defun git-run-diff-index (status files) (defun git-run-diff-index (status files)
...@@ -677,7 +677,7 @@ Return the list of files that haven't been handled." ...@@ -677,7 +677,7 @@ Return the list of files that haven't been handled."
(with-temp-buffer (with-temp-buffer
(apply #'git-call-process-env t nil "ls-files" "-z" "-s" "-c" "--" files) (apply #'git-call-process-env t nil "ls-files" "-z" "-s" "-c" "--" files)
(goto-char (point-min)) (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)) (let* ((new-perm (string-to-number (match-string 1) 8))
(old-perm (if (eq default-state 'added) 0 new-perm)) (old-perm (if (eq default-state 'added) 0 new-perm))
(name (match-string 2))) (name (match-string 2)))
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册