Git Push in Production (FTP)


130

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

Risposte:


162

Alcuni strumenti recentemente aggiunti al wiki di Git :

git-ftp di René Moser è un semplice script di shell per eseguire FTP in modo Git. Usa git-ftp.sh per caricare solo i file tracciati Git su un server FTP, che sono cambiati 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 normale client FTP può farlo.

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


3
usando git-ftp, c'è un modo per spingere solo una sottodirectory (ad esempio la cartella di pubblicazione di boilerplate html5) nella directory ftp specificata?
banda

E se ci fossero diversi sviluppatori nel team. È ancora possibile usare questi script?
Trilliput

@Trilliput: un po 'in ritardo qui, ma sì, un server intermedio / vm sulla rete come il luogo in cui tutti spingono, e quindi: github.com/ezyang/git-ftp#using-a-bare-repository-as-a -proxy
Pranav 웃

github.com/banago/PHPloy fa anche una cosa simile ma funziona con i sottomoduli, che sospetto che alcuni degli strumenti citati potrebbero avere difficoltà.
Simon East,

Il problema principale con git-ftp (script non sicuro o python) l'ho provato era molto grave quando si caricavano grossi blocchi di file e un lungo elenco di file.
indianwebdevil,


11

Ho trovato PHPloy un ottimo strumento per inviare i tuoi commit Git a server remoti su 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!

(Dichiarazione di non responsabilità: dopo averlo usato per un po 'ora ho contribuito con alcune patch di codice e miglioramenti, rendendolo compatibile con Windows.)


10

Se sei su un Mac e hai Transmit, ti consiglio il seguente script git-tranmit ( https://gist.github.com/379750 ). Utilizza DockSend per inviare solo gli ultimi file aggiornati. Se non hai familiarità con DockSend, consulta 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-transmission
  4. Installazione drop invio per la tua app live
  5. Esegui git-transmission nel tuo repository git.

1
Questo script è piuttosto goffo nella selezione degli "ultimi file aggiornati". Dai un'occhiata a questa forcella per una soluzione più elegante.
cambio rapido

Inoltre, potresti voler trasmettere solo file monitorati e non registrati. Ecco un piccolo script che fa proprio questo: gist.github.com/borisdiakur/37b8f512f6f8865b79c7
borisdiakur

5

Questo non è ciò che serve a git, a rigor di termini. Tuttavia, se la tua fonte è qualcosa che non ha bisogno di compilazione o elaborazione, ad esempio un sito Web costituito interamente da file html e javascript e simili, potresti avere un clone del repository sul tuo server web e utilizzare git pulldal server per continuare -ad oggi. Nota, vorrei configurare il tuo server web per nascondere la directory git e così via. E questo è solo l'inizio dei problemi di sicurezza.

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


29
L'unico problema con questo è quando non si ha accesso al server di produzione, cioè potrebbe essere un semplice hosting condiviso, con solo accesso FTP.
dodgy_coder il

4

Puoi usare Deployhq.com che funziona come un incantesimo, l'unica cosa che devi fare è configurare il tuo repository e il tuo account FTP.

Attualmente sono i seguenti sistemi di controllo della versione:

Git, Subversion, Mercurial.

Con repository ospitato

  • GitHub
  • bitbucket
  • GitLab
  • codebase

inserisci qui la descrizione dell'immagine




1

C'è uno script Ruby qui - Ruby git-deploy via 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 dello script di shell di git-ftp .

Esiste anche un progetto gemma di Ruby chiamato git-deploy che consente di configurare una distribuzione personalizzata tramite un telecomando git usando il git pushcomando, allo stesso modo dei servizi Heroku e Azure. Per questo potrebbe essere necessario scrivere metodi personalizzati da distribuire via FTP e penso che si presupponga che si abbia accesso SSH al proprio server di produzione.


0

Se stai mettendo in produzione il codice, ti consiglio di usare un "installer" come un pacchetto RPM per installare il tuo codice. In questo modo verrà stampato la versione e sarai in grado di sfruttare il pacchetto di installazione per supportare gli aggiornamenti del codice di produzione. Git non è davvero progettato per supportare installazioni di produzione, è destinato a tenere traccia delle modifiche al codice stesso.

In ogni caso, con un .RPM (o EXE o altro) creato, puoi semplicemente inviarlo via FTP al sistema di produzione e installarlo come qualsiasi altro pacchetto.


5
Bene, Git può essere sfruttato abbastanza bene per questo scopo nella realtà. Controlla il tag e crea hook post-checkout, post-merge ecc per gestire tutte le procedure di installazione necessarie. Usavamo i pacchetti RPM ma dopo esserci passati a git era semplicemente eccessivo.
d11wtq,

0

Aggiungilo come telecomando, quindi puoi spingerlo, anche se semplicemente spingere il codice non è sufficiente, deve essere unito all'albero di lavoro. Il modo più semplice è quello di fare il contrario, disporre di un albero di lavoro sul server e recuperare e unire quello.



0

Stavo lottando molto per capirlo. Ho trovato un modo semplice per farlo da varie fonti ( git-ftpINSTALL , git-ftpUPLOAD , git-ftpIssue , git-ftpPUSH ). Puoi leggere come riferimento ma non è necessario perché ho citato il processo passo dopo passo.

Prima cosa: installa git e 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 <tag> # checkout the latest tag by replacing <tag>
sudo make install

Aggiornamento tramite git

git pull
git tag # see available tags
git checkout <tag> # checkout the latest tag by replacing <tag>
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 distribuisci

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

Se si verifica un errore: pathspec 'index.txt' non corrisponde ad alcun file noto a git . Significa che il file non è stato ancora messo in scena, quindi aggiungi il file e prova a eseguire il commit.

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

Spero che questo ti aiuti.


0

Puoi provare FTPloy ...

https://ftploy.com

"Invia modifiche a GitHub o Bitbucket."

"Distribuisci le modifiche automaticamente sul tuo server"

Hai un progetto gratuito con cui provarlo. Attualmente sto usando un piccolo sito Web PHP e funziona abbastanza bene. Alcuni bug sul sito, ma è un progetto attivo, quindi almeno ci stanno lavorando.


1
Ho pubblicato questa risposta prematuramente. FTPloy non è abbastanza "pronto per la produzione" e ci sono molti bug. Non riuscivo a farlo funzionare. Sto usando DeployHQ che funziona molto bene.
Dave Thompson,

0

Dai un'occhiata a https://gitftp-deploy.com/ se sei su MacOS e ti piacciono le GUI.

È una piccola e simpatica applicazione che utilizza Git per tenere traccia delle modifiche e caricare solo i file modificati con FTP.

Particolarmente utile se non ti piace pagare canoni mensili per dozzine di progetti più piccoli con piccoli team.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.