Mi piacerebbe sapere se esiste un modo semplice per inserire un repository GIT in produzione (su un server FTP)? GrazieGit Push into Production (FTP)
risposta
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.
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.
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
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.
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
L'unico problema è quando non si ha accesso al server di produzione, ovvero potrebbe essere un semplice hosting condiviso, con solo accesso FTP. –
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:
- cp git-transito/usr/sbin /.
- cd/usr/sbin
- chmod + x git-trasmettere
- goccia Impostazioni per l'invio per la vostra applicazione diretta
- Run git-trasmissione nel proprio repository git.
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
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
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.
Questo è uno script in PHP per caricare quasi automaticamente il git-diff per un server FTP:
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
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.)
Bella scoperta, sembra semplice e abbastanza potente, lo proverò sicuramente. – GTCrais
Si può sempre provare a montare l'FTP in una directory locale utilizzando http://linuxconfig.org/mount-remote-ftp-directory-host-locally-into-linux-filesystem.
Quindi è possibile utilizzarlo allo stesso modo di this.
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.
Si può provare FTPloy ...
"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.
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. –
libera per un progetto e funziona molto bene.
questo è perfetto, grazie – Roch
Avete provato entrambi? Quale ragazzi vi piace di più? – trusktr
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