add vc-git-print-log-follow' and use it in vc-git-print-log'

When `vc-git-print-log-follow' is true and all files are
non-directory, pass "--follow" to "git log".
This works around bug#8756 and bug#16422.
This commit is contained in:
Sam Steingold 2016-11-14 23:37:33 -05:00
parent 1f97c37bc6
commit 8663fad0a7

View file

@ -886,6 +886,11 @@ This prompts for a branch to merge from."
(autoload 'vc-setup-buffer "vc-dispatcher")
(defcustom vc-git-print-log-follow nil
"If true, follow renames in Git logs for files."
:type 'boolean
:version "26.1")
(defun vc-git-print-log (files buffer &optional shortlog start-revision limit)
"Print commit log associated with FILES into specified BUFFER.
If SHORTLOG is non-nil, use a short format based on `vc-git-root-log-format'.
@ -905,7 +910,13 @@ If LIMIT is non-nil, show no more than this many entries."
(apply 'vc-git-command buffer
'async files
(append
'("log" "--no-color" "--follow")
'("log" "--no-color")
(when (and vc-git-print-log-follow
(not (cl-some #'file-directory-p files)))
;; "--follow" on directories is broken
;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=8756
;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=16422
(list "--follow"))
(when shortlog
`("--graph" "--decorate" "--date=short"
,(format "--pretty=tformat:%s"