지금은 pygit2 라이브러리를 사용하여 github 저장소의 커밋 트리를 탐색 할 수 있습니다. 나는 저장소에서 각 파일 변경에 대한 모든 커밋을 얻고있다. 즉, 확장자가 .rtf 인 텍스트 파일을 저장소에서 변경하고 있음을 의미합니다. 코드 변경과 관련된 커밋을 어떻게 필터링합니까? 텍스트 문서와 관련된 변경 사항을 원하지 않습니다.커밋 트리에서 코드 변경과 관련된 커밋 추출
도움이나 조언이 있으면 감사하겠습니다. 감사.
last = repo[repo.head.target]
t0=last
f = open(outputFile,'w')
print t0.hex
for commit in repo.walk(last.id):
if t0.hex == commit.hex:
continue
print commit.hex
out=repo.diff(t0,commit)
f.write(out.patch)
t0=commit;
출력의 일환으로, 나는 아래뿐만 아니라, RTF 파일의 차이를 얻을 :
diff --git a/archived-output/NEW/action-core[best].rtf b/archived-output/NEW/action-core[best].rtf
deleted file mode 100644
index 56cdec6..0000000
--- a/archived-output/NEW/action-core[best].rtf
+++ /dev/null
@@ -1,8935 +0,0 @@
-{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff31507\deff0\stshfdbch31506\stshfloch31506\stshfhich31506\stshfbi31507\deflang1033\deflangfe1033\themelang1033\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;}
-{\f2\fbidi \fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}{\f3\fbidi \froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;}
가 어느 나는 트리에서 커밋을 필터링하거나 I 출력을 필터링 할 수 있습니다. 트리를 지나는 동안 해당 커밋을 제거하여 rtf 파일과 관련된 변경 사항을 제거 할 수 있을지 생각했습니다.
게시물을 현재 코드의 모양으로 업데이트 할 수 있습니까? IMO, 지금은 너무 광범위합니다. –
@mu 나는 세부 사항을 추가했습니다. – Zack
커밋은 하나 이상의 파일을 포함 할 수 있으며, 종종 "해당 커밋을 제거"하는 것은 잘못된 해결책 일 수 있음을 기억하십시오. 각 커밋에 첨부 된 트리 개체를 반복하여 수정 된 파일을 찾은 다음 원하는 파일을 선택해야한다고 생각합니다. – larsks