문제

GIT 로그에서 사용자 정의 형식 변경 로그를 작성하는 데 도움이 필요합니다.

다음은 Git 로그가 우리가 쓰는 방식처럼 보이는 방식입니다.

commit 2f5719d373e284e4473a5a3f229cbf163f6385fe
Author: Adrian <adrian@mycompany.com>
Date:   Tue Nov 5 17:23:51 2013 +0100

    This is the title of the commit

    Some description about the commit, row 1
    Some description about the commit, row 2
    Some description about the commit, row 3

    ISSUE=BZ1020
    ISSUE=BZ1022        
    Change-Id: I1e15e12da28692e09c377c084dc439fec1d58f4c

내가 원하는 방식은 포맷하는 것입니다. title 행과 ISSUE=BZ 로드하고 멋진 변경 로그를 만듭니다. 먼저 문제 번호와 제목으로 이와 같은 것을 원합니다. 나는 또한 몇 가지를 지원하고 싶습니다 ISSUE=BZ 누군가가 한 커밋에서 여러 버그를 수정하는 경우 태그. 물론, 모든 커밋에 버그가 고정되어 있지는 않기 때문에 그 커밋을 완전히 생략하고 싶습니다.

BZ1020 This is the title of the commit
BZ1022 This is the title of the commit

지금까지 나는이 명령의 제목이 고정되어 있지 않은 모든 문제를 추출했습니다.

git log <old version>..HEAD | grep -i 'ISSUE=BZ' | sed 's/.*=//g'

생산하다:

BZ1020
BZ1022

진행 방법이 있습니까? 나는 내가 초보자라고 말해야한다. sed 명령.

도움이 되었습니까?

해결책

사용 awk 당신은 이것을 좋아할 수 있습니다 :

git log <old version>..HEAD | awk -F= '/title/ {a=$0} /ISSUE=BZ/ {b=$2 a;gsub(/ +/," ",b);print b}'
BZ1020 This is the title of the commit
BZ1022 This is the title of the commit

다른 팁

내가 따라야 할 단계는 다음과 같습니다.

  1. 사용자 정의 형식을 사용하여 제목 만 출력하십시오 ( TITLE: 선불)와 몸
  2. 찾는 SED 스크립트를 작성하십시오 TITLE:, 그것을 저장 한 다음 찾습니다 ISSUE=, 그리고 두 가지를 모두 출력합니다

그래서 여기에 내가 사용할 수있는 제한된 시간에 내가 생각해 낸 것이 있습니다. 이것은 정확히 당신이 요청한 것이 아니라 시작점입니다.

git log --format='format:TITLE:%s%n%b'|sed -ne '/^TITLE:/h;s/ISSUE=//;t found;b;: found;G;p'
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top