2010-06-01 4 views

risposta

153

Alcuni strumenti aggiunte di recente alla Git wiki:

git-ftp by René Moser is a simple shell script for doing FTP the Git way. Use git-ftp.sh to upload only the Git tracked files to a FTP server, which have changed since the last upload. This saves time and bandwith. Even if you play with different branches, git-ftp.sh knows which files are different. No ordinary FTP client can do that.

git-ftp by Edward Z. Yang is a simple script written in python for uploading files in a Git repository via FTP, only transferring new files and removing old files.

+0

questo è perfetto, grazie – Roch

+20

Avete provato entrambi? Quale ragazzi vi piace di più? – trusktr

+2

utilizzando git-ftp, c'è un modo per inserire solo una sottodirectory (ad esempio la cartella di pubblicazione di html5 boilerplate) nella directory ftp specificata? – gang

0

Se si sta mettendo il codice in produzione, si consiglia di utilizzare un "programma di installazione" come un pacchetto RPM per installare il codice. In questo modo verrà eseguita la stampa della versione e sarà possibile sfruttare il pacchetto di installazione per supportare gli aggiornamenti del codice di produzione. Git non è realmente progettato per supportare le installazioni di produzione, ma ha lo scopo di tracciare le modifiche al codice stesso.

In ogni caso, con un .RPM (o EXE o qualsiasi altra cosa) costruito, è possibile solo collegarlo al sistema di produzione e installarlo come qualsiasi altro pacchetto.

+5

Beh, git può essere molto utile per questo scopo nella realtà. Controlla il tag e crea ganci post-checkout, post-merge, ecc. Per gestire le procedure di installazione necessarie. Usavamo i pacchetti RPM ma dopo esserci trasferiti a git era semplicemente eccessivo. – d11wtq

0

Aggiungilo come telecomando, quindi puoi inviarlo, tuttavia, semplicemente il codice non è sufficiente, deve essere unito alla struttura di lavoro. Il modo più semplice è quello di andare al contrario, avere un albero di lavoro sul server e recuperarlo e unirlo in quello.

5

Questo non è il vero motivo per cui parlare. Tuttavia, se la tua fonte è qualcosa che non ha bisogno di compilazione o elaborazione, ad esempio un sito web composto da interamente di file html e javascript e simili, potresti avere un clone del repository sul server web e utilizzare git pull dal server a tenerlo aggiornato. Nota, vorrei configurare il tuo server web per nascondere la directory git e così via. E questo è solo l'inizio delle preoccupazioni per la sicurezza.

Se avete qualsiasi tipo di compilazione o di trasformazione, si dovrebbe iniziare a guardare Ant, Maven, BuildR, SBT, ecc

+27

L'unico problema è quando non si ha accesso al server di produzione, ovvero potrebbe essere un semplice hosting condiviso, con solo accesso FTP. –

10

Se Sei su un Mac e hai Transmit, ti consiglio il seguente script git-tranmit (https://gist.github.com/379750). Usa DockSend per inviare solo gli ultimi file aggiornati. Se non hai familiarità con DockSend, controlla http://www.panic.com/blog/2010/11/15-secrets-of-transmit/.

Setup:

  1. cp git-transito/usr/sbin /.
  2. cd/usr/sbin
  3. chmod + x git-trasmettere
  4. goccia Impostazioni per l'invio per la vostra applicazione diretta
  5. Run git-trasmissione nel proprio repository git.
+1

Questo script è piuttosto goffo sulla selezione di 'ultimi file aggiornati'. Dai un'occhiata a [questa forcella] (https://gist.github.com/quickshiftin/8809435) per una soluzione più elegante. – quickshiftin

+0

Oltre a ciò, è possibile che si desideri trasmettere solo i file rintracciati e non memorizzati. Ecco un piccolo script che fa proprio questo: https://gist.github.com/borisdiakur/37b8f512f6f8865b79c7 – borisdiakur

1

Qui c'è uno script Ruby - Ruby git-deploy via FTP or SSH che carica solo i file modificati nel repository git tramite FTP o SSH.

Come menzionato in un'altra risposta, ecco lo Python git-ftp.py script che fa una cosa simile.

Ed ecco la versione dello script di shell di git-ftp.

Esiste anche un progetto gemma Ruby chiamato git-deploy che consente di impostare una distribuzione personalizzata tramite un telecomando git utilizzando il comando git push, allo stesso modo dei servizi Heroku e Azure.Per questo potrebbe essere necessario scrivere metodi personalizzati per la distribuzione tramite FTP e penso che si supponga di avere accesso SSH al proprio server di produzione.

13

Se si preferisce GUI, utilizzare SourceTree, si può facilmente impostare un azione personalizzata che utilizza git -ftp menzionato sopra. Una breve descrizione sulla messa a punto (per Mac) in Push a Git repository to an FTP

enter image description here

+2

immagine davvero fantastica, ce l'hai fatta? – Julix

+0

@Julix Per l'articolo menzionato. – Geri

9

ho trovato PHPloy un ottimo strumento per l'invio del Git si impegna a server remoti tramite FTP. Funziona dalla riga di comando ed è scritto in PHP (e rileva anche i cambiamenti nei sottomoduli).

https://github.com/banago/PHPloy

git commit ... 
phploy -s staging 
phploy -s production 

Fatto!

(Disclaimer: dopo averlo usato per un po 'ora ho contribuito alcune patch di codice e miglioramenti, rendendo compatibile con Windows-it.)

+1

Bella scoperta, sembra semplice e abbastanza potente, lo proverò sicuramente. – GTCrais

0

Ho faticato molto per capirlo. Ho trovato un modo semplice per ottenere questo risultato da varie fonti (git-ftpINSTALL, git-ftpUPLOAD, git-ftpIssue, git-ftpPUSH). Puoi leggere per riferimento ma non è necessario perché ho menzionato la procedura passo passo di seguito.

Per prima cosa: installare git e arricciare con birra su MAC OS

brew install git 
brew install curl --with-ssl --with-libssh2 
brew install git-ftp 

Eseguire i seguenti comandi:

git clone https://github.com/git-ftp/git-ftp.git 
cd git-ftp 
git tag # see available tags 
git checkout <tag> # checkout the latest tag by replacing <tag> 
sudo make install 

Aggiornamento usando git

git pull 
git tag # see available tags 
git checkout <tag> # checkout the latest tag by replacing <tag> 
sudo make install 

Setup

git config git-ftp.url YourFtpServerName.Net 
git config git-ftp.user FtpUserName 
git config git-ftp.password YourPassword 

Upload tutti i file

git ftp init 

O se i file sono già lì

git ftp catchup 

lavoro e distribuire

echo "Hello StackOverflow" >> index.txt 
git commit application/libraries/index.txt -m "I love StackOverflow" 
git ftp push 

Se c'è un errore: Indice pathspec'. txt 'non corrisponde ad alcun file noto per git. Significa che il file non è stato ancora messo in scena, quindi aggiungi il file e poi prova il commit.

git add application/libraries/index.txt 
git commit application/libraries/index.txt -m "I love StackOverflow" 

Spero che questo aiuti.

2

Si può provare FTPloy ...

https://ftploy.com

"Push changes to GitHub or Bitbucket."

"Deploy Changes automatically to your server"

Si ha un progetto libero di provare con. Attualmente sto usando per un piccolo sito Web php e funziona abbastanza bene. Alcuni bug sul sito ma è un progetto attivo quindi almeno ci stanno lavorando.

+1

Ho postato questa risposta prematuramente. FTPloy non è del tutto pronto per la produzione e ci sono molti bug. Non riuscivo a farlo funzionare. Sto usando DeployHQ che funziona molto bene. –