This is possible in Emacs 26.1. You need to set the configuration variable vc-git-print-log-follow to t. The functionality was implemented in the following commit:
That change is a workaround for Emacs bug #8756: vc-git.el doesn't use --follow argument in vc-git-print-log ...
When using diff-hl and magit => v2.4.0 you have to add this:
(add-hook 'magit-post-refresh-hook 'diff-hl-magit-post-refresh)
As far as the information in the mode-line is concerned, I would recommend just ignoring that (or even removing it completely). The function which updates that is actually fairly inefficient, so one could say it is a good thing it ...
I figured it out. Following method 2 outlined in this answer, I just redefined the function vc-steal-lock by commenting out the chunk of code that has to do with emailing the person from whom you stole the lock.
'(defun vc-steal-lock (file rev owner)
"Steal the lock on FILE."
When the code in your init file runs, there are no open files at all. vc-mode is only set when a file is finally opened and determined to be in version–controlled. This means that when it runs your init file and evaluates vc-mode, it puts the nil value into the list that goes into mode-line-format. That nil is then skipped whenever the mode line is displayed....
C-hv vc-post-command-functions will probably get you the majority of them, but not necessarily all of them.
For instance, I note that vc-git.el uses its own internal vc-git--call for a handful of things (where presumably there was some problem with going via the standard channel).
Wrong number of arguments
vc-find-root must be invoked with two arguments: (vc-find-root FILE WITNESS).
To get vc root use vc-root-dir instead:
vc-root-dir is an autoloaded compiled Lisp function in vc.el.
Return the root directory for the current VC tree.
Return nil if the root directory cannot be identified.
And if you need the vc root of specified ...
I finally came around to solving this problem. The following code uses ‘vc-exec-after’ to be compatible with Emacs 23.x.
With the customizable command ‘vcx-dir-hide-states’, mapped to ‘X’ in *vc-dir* buffers:
'(up-to-date ignored unregistered)
"VC states of entries to be hidden ...
The VC packages uses caching, and in many places assumes that the user interacts with VCS systems (e.g. Git) through it.
To register a new file in a Git repository, press C-x v v, you don't need to use Eshell for that.
If you've changed a buffer's status using something else than VC commands, though, you can visit the file again to refresh the status ...
Every time ignored files show up, you move your cursor (not mouse pointer :D) to a line with an ignored file, and then type C-u x. That makes all the files in that state (ignored) disappear. Until an update of the buffer.
As far as I could find out, they for some unfathomable reason (tried to find it, found some mails which didn't seem to make any sense) ...