2016-10-31 1 views
0

ich JGit bin sehr neu und ich bin eine Implementierung dieses Git Befehl Suche:Zeigen Sie alle Dateien, die in einem Commit geändert

git show --stat <sha> 

(Was mich alle betroffenen Dateien innerhalb der Commit zeigt.)

Ich habe die RevCommit, aber wie bekomme ich die Informationen, die von git show angezeigt wird?

+0

Möchten Sie _all_ Dateien auflisten, die ein Commit oder die _changed_ Dateien bilden (d. H. Datei, die sich vom übergeordneten Commit unterscheidet)? –

+0

danke rüdiger für deine antwort, ich möchte die geänderten dateien .. – szumbe

+0

Dann solltest du deine frage umschreiben um das zu reflektieren. 'git show' listet den Inhalt eines Git-Objekts auf (commit/blob/tree). Um _changes_ aufzulisten benutze 'git diff'. Sehen Sie hier, wie Sie das mit JGit erreichen können: http://stackoverflow.com/questions/27361538/how-to-show-changes-between-commits-with-jgit –

Antwort

0

Um die Dateien aufzulisten, die eine Festschreibung bilden, müssen Sie TreeWalk verwenden. A TreeWalk kann mit der Objekt-ID (SHA-1) eines Baumes initialisiert werden und anschließend über seine Einträge durchlaufen werden.

Zum Beispiel:

TreeWalk treeWalk = new TreeWalk(repository); 
treeWalk.setRecursive(true); 
treeWalk.reset(commit.getId()); 
while(treeWalk.next()) { 
    String path = treeWalk.getPathString(); 
    String blobId = treeWalk.getObjectId(0); 
    // ... 
} 

getPathString() liefert den (repository-relative) Pfad zum aktuellen Eintrag.

getObjectId() erwartet einen Index, der den Baumiterator identifiziert, von dem die Objekt-ID abgerufen werden soll. Hier wird der erste und einzige Tree-Iterator angegeben, der implizit von reset() für den Baum des angegebenen Commits erstellt wurde.

Verwandte Themen