Holen Sie sich eine einzelne Datei von einem remote git-repository
Gibt es eine Möglichkeit, programmgesteuert laden Sie eine einzelne Datei von einem remote git-repository, in Java?
- Ich bevorzuge eine Lösung, die über so wenig Bandbreite wie möglich, vorzugsweise nur herunterladen, die einzelne Datei. Ich brauche Sie nicht zum durchsuchen des repository, ich habe bereits den Pfad der Datei.
- Ich bevorzuge eine Lösung, die nicht abhängig von anderen Anwendungen (z.B. eine installation von einem anderen git-client auf der Maschine). Eine Java-Bibliothek enthält einen git-client-Implementierung selbst wäre optimal.
War ich in der Lage, etwas ähnliches zu tun, die mit Subversion über SVNKit und ich habe gesehen, es ist eine Reine java-Implementierung von git ( eclipse JGit ist ), die in der Lage sein könnte, etwas ähnliches zu tun, also ich hoffe es gibt eine positive Antwort; obwohl das, was ich zu verstehen, wie git funktioniert - so dass Sie nur updates von den lokalen repositories - dies könnte sich als problematisch.
- Von dem was ich verstehe, jgit ist noch auf Arbeit bietet all die features der git - es ist unwahrscheinlich, dass es Funktionen bietet, die git nicht.
- Ich glaube nicht, dass dies möglich sein wird, in den Allgemeinen Fall, das heißt, wo haben Sie nur den Zugriff über das git-Protokoll. Ich glaube nicht, dass die normalen transport-Mechanismen bieten keine Möglichkeit zum Zugriff auf einzelne Dateien. Ich bin ziemlich sicher, du wirst etwas installieren auf der Fernbedienung (z.B. gitweb) oder filesystem-Zugriff auf ein repo (entweder remote oder eine lokale, möglicherweise flach, Klon).
Du musst angemeldet sein, um einen Kommentar abzugeben.
git ist nicht wirklich entwickelt, für einzelne Datei-Zugriff von einem remote-repository Sie können aber Missbrauch
git archive
für diese. Der Nachteil ist, dass Sie zum download ein "Baum" anstatt nur der blob, die Sie benötigen.E. g.
Als alternative, wenn Sie gitweb einzurichten, auf das remote-repository Sie können mit einem einfachen curl oder wget-Befehl, um eine Datei herunterladen, die im "raw" format.
git://
- Protokoll haben Sie, von was ich mich erinnere, um explizit aktivieren der entsprechenden service zu ermöglichen remote -git archive
Zugang.path/to/dir
?Welche Art von Zugang haben Sie zu dem remote-repository? Ist es via SSH, können Sie call-Befehle? Wenn dem so ist, können Sie nur aufrufen
git show HEAD:$path_to_file
.Wenn Sie nicht auf Befehle auf der Maschine, es ist immer noch durchaus möglich, dies zu tun, aber du musst verstehen, die Git-repository-format. (Das ist viel weniger beängstigend, als es klingt, da es sehr einfach durch design. Im Gegensatz zu zB. Subversion, repository-format nicht vorgesehen ist wie eine black box.)
Sprach git-clone(1):
So dass die Granularität ist ein Verzeichnis, aber Sie können festlegen, dass die revision der Geschichte.
--no-checkout
zu vermeiden, das gesamte Werk-Verzeichnis. Bandbreite keine Wirkung, aber spart eine Menge Datei-Erstellung.