Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Git: show all commits on a given weekday

Tags:

git

git-log

Can I see all of the commits which were made on a Sunday? Any and all Sundays, to be clear.

like image 629
Skylar Saveland Avatar asked Mar 07 '13 23:03

Skylar Saveland


3 Answers

Based on jingx's answer, the following will give you a log of all commits made on a Sunday.

git log --pretty='format:%h %cd' | grep 'Sun' |  awk '{print $1}' | while read rev; do
    git show $rev | head -6
done

Explanation

git log --pretty='format:%h %cd' gives a shortened log of all commits with their SHAs and commit dates. These dates contain day of the week as well.

grep 'Sun' filters out all lines of that log with 'Sun' on it, i.e., all commits made on Sundays.

awk '{print $1}' extracts the first word of each of these lines, i.e. the SHA values of each commit.

while read rev loops through each SHA value extracted from the previous awk. At each iteration, the SHA value will be stored in the rev variable.

git show $rev shows the log of the commit with the SHA $rev.

head -6 extracts the first 6 lines of that log.

like image 188
thameera Avatar answered Oct 10 '22 00:10

thameera


jingx's answer is correct, upvoted!

I just would like to mention that at some point I also wanted to retrieve the same kind of specificity, like any and all commits done:

  • on the -9 GMT hour
  • on the 33rd second
  • on Fri 13th
  • on 1337 files
  • with 777 impact (insertions - deletions)

...and found git log interface a bit lacking. But the data is there!

I created therefore https://github.com/dreamyguy/gitlogg, which parses commits of any number of repositories into one conveniently sanitised JSON file. Enjoy!

like image 44
Wallace Sidhrée Avatar answered Oct 10 '22 02:10

Wallace Sidhrée


Something like

git log --pretty='format:%h %cd' |grep Sun
like image 36
jingx Avatar answered Oct 10 '22 00:10

jingx