>

저자, 날짜, 주석 및 영향을받는 파일 (경로)이 포함 된 JSON 형식의 폴더에 대한 GitHub 기록을 출력하려고합니다. 다음 명령으로 파일을 제외한 모든 작업을 수행 할 수 있습니다.

git log --pretty=format:'{%n "commit": "%H" %n "author": "%aN <%aE>",%n "date": "%ad", %n "message": "%f" %n },' [email protected] | perl -pe 'BEGIN{print "["}; END{print "]\n"}' | perl -pe 's/},]/}]/' >log.json

파일 이름을 얻으려면 --name-only를 log 명령과 함께 사용할 수 있지만 JSON에서 배열 또는 "파일"로 실제로 가져올 수는 없습니다. 여기 내가 지금 있습니다 :

git log --name-only --pretty=format:'{%n "commit": "%H" %n "author": "%aN <%aE>",%n "date": "%ad", %n "message": "%f" %n },' [email protected] | perl -pe 'BEGIN{print "["}; END{print "]\n"}' | perl -pe 's/},]/}]/' >log.json

이것은 다음을 만든다 :

{
  "commit": "GUID" 
  "author": "My name <[email protected]",
  "date": "Mon May 29 15:42:58 2017 +0300", 
  "message": "commit comment" 
},
/folder/subfolder/file.extention
/folder/file.extention

커밋에서 파일을 JSON 배열로 지정하고 싶은 경우 :

{
  "commit": "GUID" 
  "author": "My name <[email protected]",
  "date": "Mon May 29 15:42:58 2017 +0300", 
  "message": "commit comment" 
  "files": [
    "/folder/subfolder/file.extention"
    "/folder/file.extention" ]
},

  • 답변 # 1

    여기의 주요 요령은 파일 목록을 생성되었지만 --pretty=format: 에서 분리하는 것입니다.  매개 변수. 나는 모든 --pretty=format: 를 들여 쓰기를 제안합니다  파일을 ^(\S.*) 와 쉽게 일치시킬 수 있도록  정규식.

    두 번째 요령은 , 를 제거하는 것입니다  파일 목록의 마지막 항목에서 닫는 괄호를 추가하십시오. 마지막 항목 뒤에 빈 문자열이 오며이 조건을 감지하기 위해 전체 출력을 단일 문자열로 읽을 수 있습니다 ( -0777 사용) )를 ,\n\n 와 일치시킵니다.  정규식.

    같은 -0777  이 기능을 사용하면 개구부 [ 를 삽입 할 수 있습니다   ] 를 닫는 중   ^ 를 일치시켜 쉽게  그리고 $  각각

    결국 다음 명령으로 끝납니다 :

    git log --name-only --pretty=format:' {%n  "commit": "%H",%n  "author": "%aN <%aE>",%n  "date": "%ad", %n  "message": "%f", %n  "files": [' [email protected] \
        | perl -pe 's/^(\S.*)/     "$1",/' \
        | perl -0777 -pe 's/^/[\n/; s/,\n\n/\n ]},\n/; s/,$/\n ]}\n]/'
    
    

  • 이전 android - 네이티브 디버그 로깅 멈춤 반응
  • 다음 big o - O 표기법, 결투 알고리즘