Git Push en production (FTP)


130

Je voudrais savoir s'il existe un moyen simple de pousser un référentiel GIT en production (sur un serveur FTP)? Merci

Réponses:


162

Quelques outils récemment ajoutés au wiki Git :

git-ftp de René Moser est un simple script shell permettant de faire du FTP à la manière Git. Utilisez git-ftp.sh pour télécharger uniquement les fichiers suivis Git sur un serveur FTP, qui ont changé depuis le dernier téléchargement. Cela économise du temps et de la bande passante. Même si vous jouez avec des branches différentes, git-ftp.sh sait quels fichiers sont différents. Aucun client FTP ordinaire ne peut faire cela.

git-ftp par Edward Z. Yang est un simple script écrit en python pour télécharger des fichiers dans un référentiel Git via FTP, ne transférant que de nouveaux fichiers et supprimant les anciens fichiers.


3
en utilisant git-ftp, y a-t-il un moyen de pousser juste un sous-répertoire (par exemple le dossier de publication de html5 passe-partout) dans le répertoire ftp spécifié?
gang

Et s'il y avait plusieurs développeurs dans l'équipe. Est-il encore possible d'utiliser ces scripts?
Trilliput

@Trilliput: Un peu tard ici, mais oui, un serveur intermédiaire / vm sur le réseau comme l'endroit où tout le monde pousse, et puis: github.com/ezyang/git-ftp#using-a-bare-repository-as-a -proxy
Pranav 웃

github.com/banago/PHPloy fait également la même chose mais fonctionne avec des sous-modules, avec lesquels je soupçonne que certains des outils mentionnés pourraient avoir du mal.
Simon East

Le principal problème avec git-ftp (pas sûr de script ou de python) que j'ai essayé était très mauvais lors du téléchargement de gros morceaux de fichiers et d'une longue liste de fichiers.
indianwebdevil

14

Si vous préférez l'interface graphique, utilisez SourceTree, vous pouvez facilement configurer une action personnalisée qui utilise git-ftp mentionné ci-dessus. Une brève description de la configuration (pour Mac) à Push a Git repository to an FTP

entrez la description de l'image ici


@Julix Pour l'article mentionné.
Geri Borbás

11

J'ai trouvé PHPloy un excellent outil pour envoyer vos commits Git à des serveurs distants via FTP. Il fonctionne à partir de la ligne de commande et est écrit en PHP (et détecte même les changements dans les sous-modules).

https://github.com/banago/PHPloy

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

Terminé!

(Clause de non-responsabilité: après l'avoir utilisé pendant un certain temps, j'ai maintenant apporté des correctifs et des améliorations de code, le rendant compatible avec Windows.)


10

Si vous êtes sur un mac et que vous avez Transmit, je vous recommande le script git-tranmit suivant ( https://gist.github.com/379750 ). Il utilise DockSend pour envoyer uniquement les derniers fichiers mis à jour. Si vous n'êtes pas familier avec DockSend, consultez http://www.panic.com/blog/2010/11/15-secrets-of-transmit/ .

Installer:

  1. cp git-transit / usr / sbin /.
  2. cd / usr / sbin
  3. chmod + x git-transmettre
  4. Configuration de l'envoi de baisse pour votre application en direct
  5. Exécutez git-transmettre dans votre référentiel git.

1
Ce script est plutôt maladroit dans la sélection des «derniers fichiers mis à jour». Découvrez cette fourche pour une solution plus élégante.
quickshift du

En plus de cela, vous souhaiterez peut-être transmettre uniquement les fichiers suivis et non validés. Voici un petit script qui fait exactement cela: gist.github.com/borisdiakur/37b8f512f6f8865b79c7
borisdiakur

5

Ce n'est pas à cela que sert git, à proprement parler. Cependant, si votre source est quelque chose qui n'a pas besoin de compilation ou de traitement, par exemple un site Web composé entièrement de fichiers html et javascript, etc., vous pouvez avoir un clone du dépôt sur votre serveur Web et l'utiliser à git pullpartir du serveur pour le maintenir. -à ce jour. Remarque, je configurerais votre serveur Web pour masquer le répertoire git et autres. Et ce n'est que le début des problèmes de sécurité.

Si vous avez une sorte de compilation ou de traitement, vous devriez commencer à regarder Ant , Maven , BuildR , SBT , etc.


29
Le seul problème avec cela est lorsque vous n'avez pas accès au serveur de production, c'est-à-dire qu'il peut s'agir d'un simple hébergement partagé, avec uniquement un accès FTP.
dodgy_coder

4

Vous pouvez utiliser Deployhq.com cela fonctionne comme un charme, la seule chose que vous devez faire est de configurer votre référentiel et votre compte FTP.

Ils ont actuellement les systèmes de contrôle de version suivants:

Git, Subversion, Mercurial.

Avec dépôt hébergé

  • GitHub
  • Bitbucket
  • GitLab
  • Base de code

entrez la description de l'image ici




1

Il y a un script Ruby ici - Ruby git-deploy via FTP ou SSH qui télécharge uniquement les fichiers modifiés dans le référentiel git via FTP ou SSH.

Comme mentionné dans une autre réponse, voici le script Python git-ftp.py qui fait une chose similaire.

Et voici la version du script shell de git-ftp .

Il existe également un projet Ruby gem appelé git-deploy qui vous permet de configurer un déploiement personnalisé via une télécommande git à l'aide de la git pushcommande, de la même manière que les services Heroku et Azure. Pour celui-ci, vous devrez peut-être écrire des méthodes personnalisées à déployer via FTP et je pense que cela suppose que vous avez un accès SSH à votre serveur de production.


0

Si vous mettez du code en production, je vous recommande d'utiliser un "installateur" tel qu'un package RPM pour installer votre code. De cette façon, la version sera estampillée et vous pourrez utiliser le package d'installation pour prendre en charge les mises à jour du code de production. Git n'est pas vraiment conçu pour prendre en charge les installations de production, il est destiné à suivre les modifications du code lui-même.

Dans tous les cas, avec un .RPM (ou EXE ou autre) construit, vous pouvez simplement le transférer par FTP sur le système de production et l'installer comme n'importe quel autre package.


5
Eh bien, git peut très bien être utilisé à cette fin en réalité. Vérifiez l'étiquette et créez des crochets post-checkout, post-fusion, etc. pour gérer toutes les procédures d'installation nécessaires. Nous avions l'habitude d'utiliser des packages RPM mais après avoir migré vers git, c'était tout simplement exagéré.
d11wtq

0

Ajoutez-le en tant que télécommande, puis vous pouvez y pousser, mais il ne suffit pas de pousser du code, il doit être fusionné avec l'arbre de travail. Le moyen le plus simple est de faire l'inverse, d'avoir un arbre de travail sur le serveur et de le récupérer et de le fusionner.



0

J'avais beaucoup de mal à comprendre cela. J'ai trouvé un moyen simple de faire cela à partir de diverses sources ( git-ftpINSTALL , git-ftpUPLOAD , git-ftpIssue , git-ftpPUSH ). Vous pouvez lire pour référence mais ce n'est pas nécessaire car j'ai mentionné le processus étape par étape ci-dessous.

Tout d'abord: installez git et curl en utilisant brew sur MAC OS

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

Exécutez les commandes suivantes:

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

Mise à jour avec git

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

Installer

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

Télécharger tous les fichiers

git ftp init

Ou si les fichiers sont déjà là

git ftp catchup

Travailler et déployer

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

S'il y a une erreur: pathspec 'index.txt' ne correspond à aucun fichier connu de git . Cela signifie que le fichier n'a pas encore été mis en scène, alors ajoutez le fichier, puis essayez de le valider.

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

J'espère que cela t'aides.


0

Vous pouvez essayer FTPloy ...

https://ftploy.com

"Poussez les modifications sur GitHub ou Bitbucket."

"Déployer automatiquement les modifications sur votre serveur"

Vous avez un projet gratuit pour l'essayer. J'utilise actuellement pour un petit site Web php et cela fonctionne assez bien. Quelques bugs sur le site mais c'est un projet actif donc au moins ils y travaillent.


1
J'ai posté cette réponse prématurément. FTPloy n'est pas tout à fait «prêt pour la production» et il y a beaucoup de bogues. Je n'ai pas pu le faire fonctionner. J'utilise DeployHQ qui fonctionne très bien.
Dave Thompson

0

Consultez https://gitftp-deploy.com/ si vous êtes sur MacOS et que vous aimez les interfaces graphiques.

C'est une jolie petite application qui utilise Git pour suivre les modifications et télécharger uniquement les fichiers modifiés avec FTP.

Particulièrement pratique si vous n'aimez pas payer des frais mensuels pour des dizaines de petits projets avec de petites équipes.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.