2016-11-14 4 views
4

나는 Git 기능이 통합 될 Java 기반 제품에서 작업 해왔다. Git 기능 중 하나를 사용하여 Git 저장소에 10 개 이상의 파일을 추가하고 스테이징 한 다음 단일 커밋으로 커밋했다.JGit을 사용하여 커밋 파일 목록을 얻는 방법

위 과정의 역순으로 수행 할 수 있습니까? I. 커밋의 일부로 커밋 된 파일 목록 찾기.

나는 git.log() 명령의 도움을 받아 커밋을했지만 커밋을 위해 파일 목록을 얻는 방법을 모르겠습니다.

예제 코드 :

Git git = (...); 
Iterable<RevCommit> logs = git.log().call(); 
for(RevCommit commit : logs) { 
    String commitID = commit.getName(); 
    if(commitID != null && !commitID.isEmpty()) { 
    TableItem item = new TableItem(table, SWT.None); 
    item.setText(commitID); 
    // Here I want to get the file list for the commit object 
} 
} 
+0

'힘내 기능'이 무엇인지 명확히 설명하십시오. [Eclipse JGit] (https://eclipse.org/jgit/) 또는 Eclipse IDE Git 통합을 언급하고 있습니까, 아니면 완전히 다른 것입니까? –

+0

네, 맞아. Herrmann. 나는 JGit에 대해 이야기하고있다. 커밋의 일부로 커밋 된 파일 목록을 가져 오는 데 사용되는 함수 호출이 필요합니다. –

+0

그런 다음 몇 가지 코드를 표시하십시오. 지금까지 무엇을 시도 했습니까? –

답변

6

각각 나무에 포인트를 커밋 커밋을 구성하는 모든 파일을 나타냅니다.

이 커밋으로 추가, 수정 또는 제거 된 파일뿐만 아니라이 수정본에 포함 된 모든 파일을 포함합니다.

TreeWalk treeWalk = new TreeWalk(repository); 
treeWalk.reset(commit.getId()); 
while(treeWalk.next()) { 
    String path = treeWalk.getPathString(); 
    // ... 
} 
treeWalk.close(); 

커밋 일정에 기록 된 변경에만 관심이 있다면 여기를 참조 : 여기 Creating Diffs with JGit 또는 :

나무를 반복하려면 JGit의이 TreeWalk 사용할 수 있습니다 File diff against the last commit with JGit

+1

내가 받고있어 : org.eclipse.jgit.errors.IncorrectObjectTypeException : 개체 e5acd3dd99bfc09bf93ba4dd2db4a9ddba4c7359가 나무가 아닙니다. –

+0

추가/수정 또는 제거하지 않으면 파일이 준비 영역에있는 이유는 무엇입니까? – NimChimpsky

+0

@NimChimpsky 힌트를 주셔서 감사합니다. 이 점에 대한 나의 대답은 분명하지 않았습니다. 희망을 갖고 더 잘 맞는 편집 된 답변을 참조하십시오. –

-1

당신이 시도 할 수 있습니다 :

git diff --stat --name-only ${hash} ${hash}~1 

또는 더 큰 범위에 차이를 볼 수 :

git diff --stat --name-only ${hash1} ${hash2} 
+0

Eclipse IDE를 사용하여 GIT 기능을 만들었습니다. 특정 커밋의 파일 목록을 가져올 수있는 Eclipse JGit 메서드 호출이 필요합니다. 사용자가 커밋 ID로 요청을 보내면 파일 목록을 표시 할 수 있습니다. –