Git Push into Production (FTP)

Vorrei sapere se esiste un modo semplice per inserire un repository GIT in produzione (su un server FTP)? Grazie

Alcuni strumenti recentemente aggiunti al wiki di Git :

git-ftp di René Moser è un semplice script di shell per fare il modo Git via FTP. Usa git-ftp.sh per caricare solo i file tracciati Git su un server FTP, che sono stati modificati dall’ultimo caricamento. Ciò consente di risparmiare tempo e larghezza di banda. Anche se giochi con diversi rami, git-ftp.sh sa quali file sono diversi. Nessun client FTP ordinario può farlo.

git-ftp di Edward Z. Yang è un semplice script scritto in python per caricare file in un repository Git via FTP, solo trasferendo nuovi file e rimuovendo vecchi file.

Se preferisci la GUI, usa SourceTree, puoi facilmente impostare un’azione personalizzata che usi git-ftp menzionato sopra. Una breve descrizione sull’installazione (per Mac) nel repository Push a Git su un FTP

inserisci la descrizione dell'immagine qui

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/ .

Impostare:

  1. cp git-transit / usr / sbin /.
  2. cd / usr / sbin
  3. chmod + x git-transmit
  4. Imposta drop send per la tua app live
  5. Esegui git-transmit nel tuo repository git.

Ho trovato PHPloy un ottimo strumento per inviare il tuo Git a commit su server remoti via 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 con alcune patch e miglioramenti al codice, rendendolo compatibile con Windows.)

Non è per quello che serve git, in senso stretto. Tuttavia, se la tua fonte è qualcosa che non ha bisogno di compilazione o elaborazione, ad esempio un sito Web composto interamente da file html e javascript e simili, potresti avere un clone del repository sul tuo server web e utilizzare git pull dal server per mantenere aggiornato. Nota, vorrei configurare il tuo server web per hide la directory git e così via. E questo è solo l’inizio delle preoccupazioni per la sicurezza.

Se hai qualche tipo di compilazione o elaborazione, dovresti iniziare a guardare Ant , Maven , BuildR , SBT , ecc.

Questo è uno script in PHP per caricare quasi automaticamente il git-diff su un server FTP:

http://code.google.com/p/upload-git-diff-with-ftp/

Puoi provare FTPloy …

https://ftploy.com

“Spingi le modifiche a GitHub o Bitbucket.”

“Distribuisci automaticamente le modifiche al tuo server”

Hai un progetto gratuito con cui provarlo. 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.

https://www.deployhq.com/

Gratuito per un progetto e funziona molto bene.

C’è uno script di Ruby qui – Ruby git-deploy tramite FTP o SSH che carica solo i file modificati nel repository git tramite FTP o SSH.

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

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

Esiste anche un progetto gem Ruby chiamato git-deploy che consente di configurare una distribuzione personalizzata tramite un git remote usando 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.

Se stai mettendo il codice in produzione, ti consiglio di utilizzare un “programma di installazione” come un pacchetto RPM per installare il tuo codice. In questo modo verrà eseguita la stampa della versione e sarà ansible 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, puoi semplicemente trasferirlo sul sistema di produzione e installarlo come qualsiasi altro pacchetto.

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

Puoi sempre provare a montare il ftp in una directory locale usando http://linuxconfig.org/mount-remote-ftp-directory-host-locally-into-linux-filesystem .

Quindi puoi usarlo allo stesso modo di questo .

Ho faticato molto per capire questo. 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: Installa git and curl usando brew su MAC OS

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

Esegui i seguenti comandi:

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

Aggiornamento usando git

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

Impostare

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

Carica tutti i file

 git ftp init 

O se i file sono già lì

 git ftp catchup 

Lavora e schiera

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

Se c’è un errore: pathspec ‘index.txt’ non corrisponde a nessun 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 ti aiuti.