threads / discuss / 48340

Git archeology

Subject: Git archeology

## tl;dr

5 messages between Apr 21, 2018 and Apr 24, 2018.

replies: 4people: 3as markdown or json

Vladimir Gorshenin· Apr 21, 2018, 06:19 UTC · lore
Hi,

My team and I as well as millions of other developers are excited to have such tool at hand as Git. It helps us a lot.

Now we challenged ourselves to be even more productive with Git analyzing our usage history.

And there is a problem, which I believe is fundamental for Git (please prove me wrong): how to find all overlapping commits, e.g. touching the same lines of code?

I played with “Git diff” and “Git blame” but without a reliable result. “Git diff” gives only relative number of lines and it’s not easy to track these number through 1000+ commits. “Git blame” has nice output but without any information about deletion.

What would you advice me to do?

Regards, Wladd

SZEDER Gábor· Apr 21, 2018, 06:29 UTC · re: Vladimir Gorshenin · lore

Re: Git archeology

> And there is a problem, which I believe is fundamental for Git (please
> prove me wrong): how to find all overlapping commits, e.g. touching
> the same lines of code?
You might be looking for 'git log -L'.
Vladimir Gorshenin· Apr 24, 2018, 10:31 UTC · re: SZEDER Gábor · lore

Re: Git archeology

Hi Szedar,
Thank you for the reply! I didn't expect it could be so instant!

I checked 'git log -L' option and it seems to the best one so far. But nevertheless is has a pit fall: I run it like 'git log -L ,:somefile' and get the output that needs manual scraping since each commit spans the whole file despite only few lines were actually altered.

I would like to have an output form 'git log -L' in patch style. Could it be done somehow?

Have a nice day,
Vladimir
2018-04-21 8:29 GMT+02:00 SZEDER Gábor <szeder.dev@gmail.com>:
Show 6 quoted lines
>> And there is a problem, which I believe is fundamental for Git (please
>> prove me wrong): how to find all overlapping commits, e.g. touching
>> the same lines of code?
>
> You might be looking for 'git log -L'.
>
Christian Couder· Apr 21, 2018, 06:43 UTC · re: Vladimir Gorshenin · lore

Re: Git archeology

Hi,

On Sat, Apr 21, 2018 at 8:19 AM, Vladimir Gorshenin <gorshenin.vladimir@googlemail.com> wrote:

Show 7 quoted lines
> Hi,
>
> My team and I as well as millions of other developers are excited to
> have such tool at hand as Git. It helps us a lot.
>
> Now we challenged ourselves to be even more productive with Git
> analyzing our usage history.

What kind of analysis do you want to do? Is it the same kind of analysis as described in the "Token-based authorship information from Git" article (https://lwn.net/Articles/698425/) on LWN.net?

> And there is a problem, which I believe is fundamental for Git (please
> prove me wrong): how to find all overlapping commits, e.g. touching
> the same lines of code?

It is not very clear what you would consider overlapping commits or commits touching the same lines of code. If some lines of code have been duplicated in different files, for example, are the commits touching the original lines relevant to what happened to the duplicated lines? And what about lines that were moved from one file to another or in the same file?

> I played with “Git diff” and “Git blame” but without a reliable
> result. “Git diff” gives only relative number of lines and it’s not
> easy to track these number through 1000+ commits. “Git blame” has nice
> output but without any information about deletion.
Did you try 'git log -L' as Szeder Gábor just suggested?
> What would you advice me to do?

If 'git log -L' and other git commands are not doing what you want, you might want to take a look at cregit (https://github.com/cregit/cregit) and maybe at other work from the people who developed it. The above LWN.net article is about their early work.

There are links related to this tool in: https://git.github.io/rev_news/2017/05/17/edition-27/

Vladimir Gorshenin· Apr 24, 2018, 10:37 UTC · re: Christian Couder · lore

Re: Git archeology

Hi Christian,
Thank you for the reply.

After I got the reply from Szedar I was so excited about git community passion for help. And your reply made me ever more assure in it. Once again thank your for the comprehensive answer. I appreciate Daniel German's research and going to try token based method in my task as well.

Have a nice day,
Vladimir
2018-04-21 8:43 GMT+02:00 Christian Couder <christian.couder@gmail.com>:
Show 44 quoted lines
> Hi,
>
> On Sat, Apr 21, 2018 at 8:19 AM, Vladimir Gorshenin
> <gorshenin.vladimir@googlemail.com> wrote:
>> Hi,
>>
>> My team and I as well as millions of other developers are excited to
>> have such tool at hand as Git. It helps us a lot.
>>
>> Now we challenged ourselves to be even more productive with Git
>> analyzing our usage history.
>
> What kind of analysis do you want to do? Is it the same kind of
> analysis as described in the "Token-based authorship information from
> Git" article (https://lwn.net/Articles/698425/) on LWN.net?
>
>> And there is a problem, which I believe is fundamental for Git (please
>> prove me wrong): how to find all overlapping commits, e.g. touching
>> the same lines of code?
>
> It is not very clear what you would consider overlapping commits or
> commits touching the same lines of code. If some lines of code have
> been duplicated in different files, for example, are the commits
> touching the original lines relevant to what happened to the
> duplicated lines? And what about lines that were moved from one file
> to another or in the same file?
>
>> I played with “Git diff” and “Git blame” but without a reliable
>> result. “Git diff” gives only relative number of lines and it’s not
>> easy to track these number through 1000+ commits. “Git blame” has nice
>> output but without any information about deletion.
>
> Did you try 'git log -L' as Szeder Gábor just suggested?
>
>> What would you advice me to do?
>
> If 'git log -L' and other git commands are not doing what you want,
> you might want to take a look at cregit
> (https://github.com/cregit/cregit) and maybe at other work from the
> people who developed it. The above LWN.net article is about their
> early work.
>
> There are links related to this tool in:
> https://git.github.io/rev_news/2017/05/17/edition-27/

← back to recent threads