Re: Git log: filtering by date and by lines do not work together

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Am 03.07.20 um 16:14 schrieb Мария Долгополова:
> Hi! I would like to report the bug.
>
> I want to get commits that change specific lines in a specific file
> and were made before a specific date.
>
> Steps:
> 1) I apply filtering by date: --before="2016-11-18"
> Result is in the picture FilteringByDate.png. Commit
> 570778797effd69bd4536c51125b7d2e8f654c08 is presented.
>
> 2) I apply filtering by lines:
> -L33,34:src/main/java/org/toradocu/translator/Subject.java
> Result is in the picture FilteringByLines.png . Commit
> 570778797effd69bd4536c51125b7d2e8f654c08 is presented.
>
> 3) Finally, I apply filtering by lines and by date:
> --before="2016-11-18"
> -L33,34:src/main/java/org/toradocu/translator/Subject.java
> Result is in the picture FilteringByDatesAndLines.png . Commit
> 570778797effd69bd4536c51125b7d2e8f654c08 is NOT presented.
>
> Expected Result: the commit is presented in filter 1 and in filter 2,
> so it must be presented in filter “1 AND 2”
>
> Actual Result: the commit is NOT presented in filter “1 AND 2”
>
> Environment: git version 2.27.0.windows.1
>
>  I beg you to provide me with a workaround. I am doing research work
> on analyzing commits in open source projects. Therefore, this
> functionality is very important to me.

You could do the date filtering on the output of git log, e.g.:

  git log -L33,34:src/main/java/org/toradocu/translator/Subject.java --date=short --color=always |
  awk -v before=2016-11-18 '
    /^[^ ]*commit/ {state=1; header=""}
    /^[^ ]*Date:/ {if ($2 <= before) {state=2; printf "%s", header} else {state=0}}
    state == 1 {header = header $0 ORS}
    state == 2 {print}
  '

This command is a bit unwieldy, so you might want to put the AWK
script into a file, then you could use it like this:

  git log -L33,34:src/main/java/org/toradocu/translator/Subject.java --date=short --color=always |
  awk -v before=2016-11-18 -f gitlogbefore.awk

René




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux