Frage

Gibt es eine Möglichkeit, um programmatisch eine einzelne Datei von einem entfernten Git Repository herunterladen, in Java?

  1. ich eine Lösung bevorzugen, die so wenig Bandbreite wie möglich verwendet, das Herunterladen von vorzugsweise nur, dass einzelne Datei. Ich brauche nicht auf das Repository zu sehen, habe ich bereits den Pfad der Datei haben.
  2. Ich ziehe es eine Lösung, die auf anderen Anwendungen nicht davon abhängt (zum Beispiel einer Installation eines anderen git-Client auf der Maschine). Eine Java-Bibliothek, die eine git-Client-Implementierung enthält sich optimal wäre.

Ich war in der Lage, etwas ähnliches zu tun mit Subversion mit SVNKit und ich habe es gesehen eine reine Java ist Implementierung von git ( eclipse JGit ), die etwas vielleicht in der Lage ähnlich, dies zu tun, ich hoffe, es eine positive Antwort ; obwohl von dem, was ich über zu verstehen, wie git Werke - so dass Updates nur von den lokalen Repositories -. Dies könnte sich als problematisch,

War es hilfreich?

Lösung

git nicht wirklich für einzelnen Dateizugriff von einem Remote-Repository entwickelt, aber Sie können git archive für dieses missbrauchen. Der Nachteil ist, dass Sie einen „Baum“ zum Download haben, anstatt nur den Blob, dass Sie benötigen.

z.

git archive --remote=url://to.git.repo branch path/to/dir | tar -x file

Als Alternative, wenn Sie gitweb haben auf der Remote-Repository einrichten Sie eine einfache curl oder wget Befehl verwenden, können eine beliebige Datei in seinem „rohen“ Format zum Download bereit.

Andere Tipps

Was für einen Zugang zu tun, Sie zu der Remote-Repository? Ist es über SSH, können Sie rufen Befehle? Wenn ja, können Sie einfach invoke git show HEAD:$path_to_file.

Wenn Sie auf dieser Maschine nicht invoke Befehle können, ist es noch durchaus möglich ist, dies zu tun, aber Sie werden das Git-Repository-Format verstehen müssen. (Das ist viel weniger beängstigend als es klingt, da es sehr einfach ist konstruktionsbedingt. Im Gegensatz zu z. B. Subversion, das Repository-Format wird nicht als Blackbox gedacht.)

git- Klon (1) :

  

- Tiefere Tiefe

     

Erstellen Sie einen flachen Klon mit einer Geschichte   trunkiert auf den angegebenen    Anzahl der Revisionen. Eine flache Repository hat eine Anzahl von   Einschränkungen (man kann nicht Klon oder von ihm holen, noch von Push   Noch   hinein), aber ausreichend, wenn Sie in die interessiert sind,   kürzlich   Geschichte eines großen Projekts mit einer langen Geschichte und wollen würde   Bitte senden Sie in Updates als Patches.

So ist die Granularität ein Verzeichnis ist, aber Sie können die Revisionsgeschichte begrenzen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top