31 Stimmen

Wie kann man eine Datei in JGit "cat"?

Vor einiger Zeit war ich auf der Suche nach einem einbettbares verteiltes Versionskontrollsystem in Java , und ich glaube, ich habe sie gefunden in JGit die eine reine Java-Implementierung von git ist. Allerdings gibt es nicht viel in Form von Beispielcode oder Tutorials.

Wie kann ich JGit verwenden, um die HEAD-Version einer bestimmten Datei abzurufen (genau wie svn cat o hg cat tun würde)?

Ich vermute, dass dies eine gewisse Umdrehungszahl erfordert, und suche nach einem Codebeispiel.

1 Stimmen

Die Entwickler antworten ziemlich schnell auf der Mailingliste: dev.eclipse.org/mailman/listinfo/egit-dev . Ich schlage vor, Sie versuchen es einmal.

3voto

jitter Punkte 52721

Einige Informationen finden Sie unter JGit-Tutorial (aber auch das ist weder wirklich hilfreich noch vollständig und wahrscheinlich veraltet, da sie auf Eclipse wo noch keine Dokumentation vorhanden ist).

3voto

Mincong Huang Punkte 4771

Sie können den Inhalt eines bestimmten Dateipfads wie folgt lesen. Bitte beachten Sie, dass der TreeWalk null wenn in dem angegebenen Baum kein Pfad gefunden wurde. Dies erfordert also eine besondere Behandlung.

public String readFile(RevCommit commit, String filepath) throws IOException {
    try (TreeWalk walk = TreeWalk.forPath(repo, filepath, commit.getTree())) {
        if (walk != null) {
            byte[] bytes = repo.open(walk.getObjectId(0)).getBytes();
            return new String(bytes, StandardCharsets.UTF_8);
        } else {
            throw new IllegalArgumentException("No path found.");
        }
    }
}

Zum Beispiel:

ObjectId head = repo.resolve(Constants.HEAD);
RevCommit last = repo.parseCommit(head);
readFile(last, "docs/README.md")

Diese Antwort wurde mit JGit 4.8.0 geschrieben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X