2009-02-27 4 views
15

Conservo un sacco di cose nei repository git, là fuori sulla rete. Il problema è che spesso mi trovo su macchine che non hanno git e dove non ho accesso root. Non ho necessariamente bisogno di riportare le modifiche al repository, basta ottenere il master attuale del progetto git.Posso scaricare un repository git senza git?

C'è un modo per scaricare un repository git, senza git stesso? La soluzione ideale sarebbe una sorta di script di shell portatile.

Grazie!

+1

Umm, scp/rsync non funziona per qualche motivo? –

+0

HAI DETTO script di shell .. quindi mi chiedo solo :) –

+0

Il fatto è che ho solo accesso a git: // my_project, non a pieno accesso alla shell :-( –

risposta

4

Sembra che quello che stai cercando sia qualcosa che ti permetterà di avere una directory di lavoro locale con il tuo attuale repository git remoto .

Dato che questo va contro la filosofia di avere sempre l'intera cronologia del repository locale, dubito che riuscirai a trovare qualcosa. La soluzione migliore sarebbe probabilmente quella di copiare semplicemente i sorgenti da un'altra directory di lavoro Git tramite i tipici metodi di copia dei file (ftp un tarball o qualsiasi altra cosa).

MODIFICA: OOC, il client git in realtà richiede accesso amministratore per l'installazione per uso personale? Capisco che abbia bisogno dell'amministratore per installare uno dei server Git, ma il client dovrebbe essere OK con accesso solo utente. Prova a installare (o compilare da fonti) solo il client.

+0

Uomo, così stupido da parte mia non pensare di provare a crearlo dal sorgente e installarlo localmente! È stato creato in modo pulito e installato in ~/local, nessun problema. Heh, grazie per questo! –

5

È possibile aggiungere un browser Git basato sul Web ai computer che ospitano questi repository? Qualcosa come Gitweb o simile?

15

Sul server con il repository git, creare uno script di shell che esporta e ignora il codice, quindi scarica lo zip dalle altre macchine.

Ad esempio:

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


Inoltre, per rendere questo generare HEAD on-demand, utilizzare uno script lato server per eseguire lo script di shell e di fornire il file zip per il download.

Ecco uno script CFML di base che esegue questa operazione, ma può ovviamente essere scritto in qualsiasi linguaggio lato server.

<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: L'interfaccia web cgit a git supporta questa out of the box. Visualizza qualsiasi commit e puoi scaricare un file .zip, .tar.gz o .tar.bz2

+0

@Peter, un caso in cui la montagna non verrà a Maometto, Maometto deve andare sulla montagna. –

+0

Lieven: Penso che la frase sia nell'ordine inverso :) – Nerian

+0

+1 per il link a cgit – nsantorello

6

È possibile scp (1) un repository git sul computer locale, se si dispone dell'accesso ssh alla macchina su cui risiede il repository git. Quando si desidera unire la cronologia, è possibile eseguire il backup del nuovo repo e unire.

+0

+1 per l'ovvio e buon senso. –

+0

o ssh su una macchina con git, quindi clonare il repository, quindi eseguire il backup della directory di lavoro sulla macchina in cui ci si trova. –