# Git archeology

5 messages from 2018-04-21 to 2018-04-24. Participants: Vladimir Gorshenin, SZEDER Gábor, Christian Couder.
Thread: https://gitlist.dev/t/48340

## Vladimir Gorshenin, 2018-04-21 06:19

Subject: Git archeology
Message-ID: <CAEbJ=SN0h_eO+0CJQGEnEafhzgAYdgXByUqb_vsC1rgGw7jNAw@mail.gmail.com>
URL: https://gitlist.dev/e/CAEbJ%3DSN0h_eO%2B0CJQGEnEafhzgAYdgXByUqb_vsC1rgGw7jNAw%40mail.gmail.com

```
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, 2018-04-21 06:29

Subject: Re: Git archeology
Message-ID: <20180421062923.4467-1-szeder.dev@gmail.com>
URL: https://gitlist.dev/e/20180421062923.4467-1-szeder.dev%40gmail.com
In-Reply-To: <CAEbJ=SN0h_eO+0CJQGEnEafhzgAYdgXByUqb_vsC1rgGw7jNAw@mail.gmail.com>

```
> 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, 2018-04-21 06:43

Subject: Re: Git archeology
Message-ID: <CAP8UFD1H9vUVkx2rCJ03954jZp==Wj+O06hO1YYPQcVHbSV_Zw@mail.gmail.com>
URL: https://gitlist.dev/e/CAP8UFD1H9vUVkx2rCJ03954jZp%3D%3DWj%2BO06hO1YYPQcVHbSV_Zw%40mail.gmail.com
In-Reply-To: <CAEbJ=SN0h_eO+0CJQGEnEafhzgAYdgXByUqb_vsC1rgGw7jNAw@mail.gmail.com>

```
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/

```

## Vladimir Gorshenin, 2018-04-24 10:31

Subject: Re: Git archeology
Message-ID: <CAEbJ=SOkfHHrmbUXP_niRP4S0HSENqXriGWNFoYX2XpdvWzZww@mail.gmail.com>
URL: https://gitlist.dev/e/CAEbJ%3DSOkfHHrmbUXP_niRP4S0HSENqXriGWNFoYX2XpdvWzZww%40mail.gmail.com
In-Reply-To: <20180421062923.4467-1-szeder.dev@gmail.com>

```
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>:
>> 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, 2018-04-24 10:37

Subject: Re: Git archeology
Message-ID: <CAEbJ=SMh0801GV6Yfibbj2ynL9sJQFpbi6N_q7UMXu-xayXoqw@mail.gmail.com>
URL: https://gitlist.dev/e/CAEbJ%3DSMh0801GV6Yfibbj2ynL9sJQFpbi6N_q7UMXu-xayXoqw%40mail.gmail.com
In-Reply-To: <CAP8UFD1H9vUVkx2rCJ03954jZp==Wj+O06hO1YYPQcVHbSV_Zw@mail.gmail.com>

```
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>:
> 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/

```
