git: список изменений день ото дня - PullRequest
20 голосов
/ 04 июня 2010

Как создать список изменений коммитов, сгруппированных по дате, в формате:

[date today]
- commit message1
- commit message2
- commit message3
...
[date day+3]
- commit message1
- commit message2
- commit message3
...
(skip this day if no commits)

[date day+1]
- commit message1
- commit message2
- commit message3
... 
[date since]
- commit message1
- commit message2
- commit message3

Любая команда git log или скрипт smart bash?

Ответы [ 5 ]

23 голосов
/ 05 июня 2010

Вот грязная, но рабочая версия скрипта, которую я придумал:

#!/bin/bash
# Generates changelog day by day
NEXT=$(date +%F)
echo "CHANGELOG"
echo ----------------------
git log --no-merges --format="%cd" --date=short | sort -u -r | while read DATE ; do
    echo
    echo [$DATE]
    GIT_PAGER=cat git log --no-merges --format=" * %s" --since=$DATE --until=$NEXT
    NEXT=$DATE
done
9 голосов
/ 17 января 2011

Я не смог получить принятый ответ для обработки сегодняшних коммитов, так как мои настройки не обрабатывали NEXT-переменную правильно на первой итерации Параметры журнала Git также будут принимать время, что устраняет необходимость в следующей дате:

#!/bin/bash
# Generates changelog day by day
echo "CHANGELOG"
echo ----------------------
git log --no-merges --format="%cd" --date=short | sort -u -r | while read DATE ; do
    echo
    echo [$DATE]
    GIT_PAGER=cat git log --no-merges --format=" * %s" --since="$DATE 00:00:00" --until="$DATE 24:00:00"
done
1 голос
/ 04 июня 2010

Для этого наверняка потребуется какой-то сценарий.
Немного похоже на это commandline-fu

for k in `git branch|perl -pe s/^..//`;do echo -e `git show --pretty=format:"%Cgreen%ci %Cblue%cr%Creset" $k|head -n 1`\\t$k;done|sort -r

(не точно что вы ищете, но, тем не менее, может дать вам представление)

Я знаю о GitStats , который также имеет данные, упорядоченные по дате (но не сообщения о фиксации)


Примечание: часть git branch этой команды плохо приспособлена для написания сценариев, как комментирует Якуб Наребски .
git for-each-ref или git show-ref являются естественным кандидатом на команды сценариев, так как команды .

1 голос
/ 04 июня 2010

git log имеет --since и --until, не должно быть сложно обернуть некоторые вещи вокруг этого.

0 голосов
/ 12 февраля 2013

Я написал скрипт на python для создания еженедельного журнала git.

Вы можете легко изменить его на дни, месяцы и т. Д., Изменив timedelta

https://gist.github.com/NahimNasser/4772132

...