On Fri, 2018-11-30 at 13:57 -0500, Alfred M. Szmidt wrote: > I don't see how "git blame" (which is useful, and available via > vc-mode) replaces what what a ChangeLog style format provides, it > won't tell me anything about how functions have moved, been renamed, > etc. You'll need go back and forth, up and down keeping track of the > exact changes made to a file, it will also not work well if you have > renamed files, or a function being moved between files.
Maybe you just need a better interface? We have that already! The ChangeLog! :-) In magit (in Emacs) I can run its blame mode, then hit return on any chunk and it shows me, in another buffer, the complete commit including both the --stat output and full diff, so all changes made as part of that commit can be seen. Also if you use "b" on any chunk it will jump to the previous commit before the one that made that change, so you can walk the history of just one specific area of code. I think this is not really what one (or at least, I) is after. Here is one typical excursion, picking a random file and function in Emacs: pr-menu-set-txt-title in lisp/printing.el. I was unable to follow the history of pr-menu-set-txt-title using git log, git blame, or any other such command. Infact, I get the wrong information from git blame, mainly because of things getting wrapped with a eval-when: ebe4c71027c (Vinicius Jose Latorre 2007-10-27 00:25:43 +0000 1564) (defun pr-menu-set-txt-title (value &optional item entry index) If we look at the ChangeLog, we learn that this function was infact moved with in the file in 2008-02-01, and an alias was created for it on the same date. Looking at that particular diff is a mess, it is over 2000 lines. I actually prefer some aspects of vc-annotate in Git mode, which can also do the above including jumping to the previous commit depending on the line under point (using "a" this time)... but while vc-annotate displays the Git commit message, it doesn't display the stat or complete diff which is a shame. I haven't looked to see if this could be added. That would be a very nice feature, and something I found lacking above.
