Nazri Ramliy <ayieh...@gmail.com> writes:

> On Sun, Aug 18, 2013 at 6:33 PM, Zhan Jianyu <nasa4...@gmail.com> wrote:
>>   Such a requirement came into my mind when I am tracking a gloomy C
>> struct , with lengthy list of elements which are either elaborated or
>> opaque. So I use git blame to track it down and found that its
>> original version is quite simple and intuitive. So I think I could
>> just slice out every snapshot of this struct, reading every changelog
>> , to get a better knowledge of what it is and why it should be like
>> this.
>>
>> It seems quite helpful but the process is quite cumbersome. So I
>> wonder if there is already some mechanism fulfilling my requirement in
>> Git.  If it doesn't,  would it be worthy adding one ?
>
> It's already merged to git.git's master quite recently in
> ed73fe56428eecd2b635473f6a517a183c4713a3 (back in June).
>
> You'd invoke git log like this:
>
>     $ git log -L :struct_or_function_name:filename.c
>
> and it will show you the commits and the specific hunks that affect
> the struct or function name.
>
> It's still a bit rough on the edges, for example, doing the following
> in git.git:
>
>     $ git log -L :rev_cmdline_info:revision.h
>
> Shows three commits (a765499, ca92e59 and 281eee4) where the second
> one does not touch the struct at all (if you do "git show ca92e59" you
> might gain an insight as to how -L works).

Hmm, IIUC that's actually not a bug or even a roughness; it's an
artifact of how the :pattern:file syntax is defined.  It takes the first
_funcname line_ matching 'pattern', up to (but excluding) the next
funcname line.

The default funcname rule (in the absence of any patterns) does not
match '#define...' on account of the '#'.  The default funcname pattern
for 'cpp' (if you manually configured your git.git repo to set this
attribute; it doesn't by default) never matches a leading '#ยด either.
So it's no surprise that the tracked range extends a few more lines
after the struct.

Or is there an issue that I'm missing?

-- 
Thomas Rast
trast@{inf,student}.ethz.ch
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to