현재 변경 로그를 생성하는 코드는 다음과 같습니다.
svn2cl --linelen 78 --reparagraph --include-rev --group-by-day
내가 얻을 수 있는 가장 가까운 바닐라 옵션은
git shortlog --format='* [%h] %s' -w78,8,10
svn2cl
출력을 최대한 가깝게 시뮬레이션하려면 어떻게 해야 합니까?
출력 예:
2013-02-19 username
* [r30695] path1: commit message
* [r30691] path2, path3, path4: looooooooooooooooooooooooooooong
commit message
* [r30690] path1, path3: commit message
2013-02-19 other_user
* ...
2013-02-18 username
* ...
두 가지 문제가 남아 있습니다.
- 메시지를 커밋하기 전에 사람이 읽을 수 있는 경로 목록을 포함합니다.
- 긴 커밋 메시지를 예쁘게 인쇄하기
답변1
또 다른 솔루션올바른 방향이 주어졌습니다. 지금까지의 결과:
#!/usr/bin/env bash
while read -r -u 9 date name
do
echo "$date $name"
echo
GIT_PAGER=cat git log --no-merges --committer="$name" --since="$date 00:00:00 +0000" --until="$(date --date="$date + 1 day" +%Y-%m-%d) 00:00:00 +0000" --format=' * [%h] %s'
echo
done 9< <(git log --no-merges --format=$'%cd %cn' --date=short | sort --unique --reverse)
자정 시간이 필요합니다. 어떤 이유에서인지 기본적으로 하루의 시작 시간이 아닌 현재 시간이 설정된 것 같습니다.
두 가지 문제가 남아 있습니다.
- 메시지를 커밋하기 전에 사람이 읽을 수 있는 경로 목록을 포함합니다.
- 긴 커밋 메시지를 예쁘게 인쇄하기
예제 출력:
2013-02-19 username
* [f97bb5f] commit message
* [f0e419d] looooooooooooooooooooooooooooong commit message
* [070e50f] commit message
2013-02-19 other_user
* ...
2013-02-18 username
* ...
답변2
OS X에서 작동하도록 하기 위해 l0b0의 솔루션을 약간 수정했습니다.
git-grouped-log () {
while read -r -u 9 since name
do
until=$(date -j -v+1d -f '%Y-%m-%d' $since +%Y-%m-%d)
echo "$since $name"
echo
GIT_PAGER=cat git log \
--no-merges \
--committer="$name" \
--since="$since 00:00:00 +0000" \
--until="$until 00:00:00 +0000" \
--format=' * [%h] %s'
echo
done 9< <(git log --no-merges --format=$'%cd %cn' --date=short | sort --unique --reverse)
}
또한 임의의 파일에 저장할 수 있기 때문에 함수로 래핑합니다.