2009-02-27 3 views
15

Ich habe eine Menge Zeug in Git-Repositories, da draußen im Netz. Das Problem ist, dass ich mich oft auf Computern befinde, die kein Git haben und wo ich auch keinen Root-Zugang habe. Ich muss die Änderungen nicht unbedingt zurück in den Repo übertragen, sondern nur den aktuellen Master des Git-Projekts.Kann ich ein Git-Repository ohne Git herunterladen?

Gibt es eine Möglichkeit, ein Git Repo herunterzuladen, ohne git selbst zu haben? Die ideale Lösung wäre eine Art tragbares Shell-Skript.

Danke!

+1

Umm, funktioniert scp/rsync aus irgendeinem Grund nicht? –

+0

Sie sagen Shell-Skript .. so nur wundernd :) –

+0

Die Sache ist, ich habe nur Zugriff auf git: // my_project, nicht vollständige Shell-Zugriff :-( –

Antwort

4

Es klingt wie das, was Sie suchen, ist etwas, das Ihnen ein lokales Arbeitsverzeichnis mit Ihrer tatsächlichen Git-Repository-Fernbedienung haben wird .

Da das irgendwie gegen die Gitphilosophie geht, immer Ihre gesamte Repository-Geschichte lokal zu haben, bezweifle ich, dass Sie irgendetwas finden werden. Ihre beste Wette wäre wahrscheinlich, die Quellen aus einem anderen git-Arbeitsverzeichnis über typische Dateikopiermethoden zu kopieren (ftp a tarball oder was auch immer).

EDIT: OOC, funktioniert die git-Client tatsächlich Admin-Zugriff benötigen für den persönlichen Gebrauch zu installieren? Ich verstehe Admin benötigen, um einen der Git-Server zu installieren, aber der Client sollte OK mit nur Benutzerzugriff sein. Versuchen Sie, nur den Client zu installieren (oder aus Quellen zu kompilieren).

+0

Mann, so dumm von mir nicht zu versuchen, es von der Quelle zu bauen und lokal zu installieren! Es wurde sauber gebaut und in ~/local installiert, kein Problem. Heh, danke dafür! –

5

Können Sie den Computern, die diese Repositories hosten, einen webbasierten Git-Browser hinzufügen? So etwas wie Gitweb oder ähnliches?

15

Erstellen Sie auf dem Server mit dem Git-Repository ein Shell-Skript, das den Code exportiert und komprimiert, und laden Sie dann diesen Zip von den anderen Computern herunter.

Zum Beispiel:

cd /pub/git/project.git 
git archive --format=zip --prefix=project/ HEAD > /home/project/public_html/downloads/project-dev.zip 


Auch um diese HEAD zu machen generieren on-Demand, verwenden Sie ein serverseitiges Skript das Shell-Script auszuführen und die Zip-Datei zum Download zur Verfügung stellen.

Hier ist eine grundlegende CFML-Skript, das dies tut - aber es kann natürlich in jeder serverseitigen Sprache geschrieben werden.

<cfset OutputFilename = "#ProjectName#-dev.zip"/> 
<cfexecute name="/home/project/latest.sh"/> 
<cfheader name="Content-Disposition" value="inline; filename=#OutputFilename#"/> 
<cfcontent file="./#OutputFilename#" reset type="application/zip"/><cfsetting showdebugoutput="false"/><cfabort/> 


EDIT: Das cgit Web-Interface zu git unterstützt dies aus dem Kasten heraus. Sehen Sie sich ein Commit an und laden Sie eine .zip, .tar.gz oder eine .tar.bz2 herunter

+0

@Peter, ein Fall von, wenn der Berg nicht zu Muhammad kommen wird, muss Muhammad zum Berg gehen. Sehr nett. –

+0

Lieven: Ich denke, der Ausdruck ist in umgekehrter Reihenfolge :) – Nerian

+0

+1 für den Link zu cgit – nsantorello

6

Sie können einfach ein git-Repository scp (1) auf Ihrem lokalen Rechner speichern, wenn Sie ssh-Zugriff auf den Rechner haben, auf dem sich das git-Repository befindet. Wenn Sie den Verlauf zusammenführen möchten, können Sie den neuen Repo zurückverfolgen und zusammenführen.

+0

+1 für den offensichtlichen und gesunden Menschenverstand. –

+0

oder ssh zu einer Maschine mit Git, dann klonen Sie den Repo, dann scp das Arbeitsverzeichnis zurück zu der Maschine, die Sie sind. –