So I found the question about how to view the change history of a file, but the change history of this particular file is huge and I'm really only interested in the changes of a particular method. So would it be possible to see the change history for just that particular method?
I know this would require git to analyze the code and that the analysis would be different for different languages, but method/function declarations look very similar in most languages, so I thought maybe someone has implemented this feature.
The language I'm currently working with is Objective-C and the SCM I'm currently using is git, but I would be interested to know if this feature exists for any SCM/language.
Recent versions of git log
learned a special form of the -L
parameter:
-L :<funcname>:<file>
Trace the evolution of the line range given by
"<start>,<end>"
(or the function name regex<funcname>
) within the<file>
. You may not give any pathspec limiters. This is currently limited to a walk starting from a single revision, i.e., you may only give zero or one positive revision arguments. You can specify this option more than once.
...
If“:<funcname>”
is given in place of<start>
and<end>
, it is a regular expression that denotes the range from the first funcname line that matches<funcname>
, up to the next funcname line.“:<funcname>”
searches from the end of the previous-L
range, if any, otherwise from the start of file.“^:<funcname>”
searches from the start of file.
In other words: if you ask Git to git log -L :myfunction:path/to/myfile.c
, it will now happily print the change history of that function.