On m'a conseillé de m'installer sur un serveur distant
foo.com/~/bar.com # live webpage content
foo.com/~/bar.com.git # a bare repo
donc, depuis ma machine locale, je peux faire un
git Push
et il poussera vers foo.com/~/bar.com.git
sur la machine distante (le chemin complet est ssh://[email protected]/~/bar.com.git
Comment peut-on ajouter un hook , pour qu'après le Push, le serveur distant cd ~/bar.com
et faites un git pull
pour que tout le contenu soit mis à jour (comme la machine locale)? (pas besoin d'exécuter git update
comme pour Mercurial?)
(ceci est lié à Impossible de cloner un dossier sur un serveur, puis de le modifier et de le pousser? pour le moment, je peux ssh vers foo.com
et cd ~/bar.com
et attendez là et faites un git pull
chaque fois après un git Push
depuis la machine locale, mais ce serait bien de le faire automatiquement)
Mise à jour : veuillez publier une réponse uniquement si vous connaissez des détails spécifiques et comment le faire. Si vous cherchez sur Google et que vous publiez le premier ou le deuxième résultat Google ici, cela n'aidera pas.
Mise à jour 2 : je suis allé à ~/bar.com.git/hooks
et ajoutez un nouveau fichier post-receive
avec le contenu:
#!/bin/bash
cd ~/bar.com
git pull ../bar.com.git master
et aussi chmod 755 post-receive
, et si je modifie un fichier sur la machine locale, puis git com -m "ok"
et git Push
, il n'entraîne pas la modification dans le dossier de la machine distante ~/bar.com
Vous pouvez ajouter un post-receive
crochet au ~/bar.com.git
repo pour cela. Pour ce faire, ajoutez à la ~/bar.com.git/hooks/
répertoire un fichier exécutable post-receive
avec le contenu:
#!/bin/sh
unset $(git rev-parse --local-env-vars)
cd ~/bar.com
git pull
Assurez-vous que le post-receive
le fichier a les bits exécutables (par exemple 755).
Maintenant, chaque fois que quelque chose est poussé vers le ~/bar.com.git
repo, le ~/bar.com
le dépôt est mis à jour automatiquement.
Voir également
pour comprendre pourquoi la suppression de certaines variables d'environnement est nécessaire.
J'utilise ce qui suit post-update
script (assurez-vous de définir un bit exécutable dessus):
#!/bin/sh
rm -rf ~/public_html/xxx
git-archive --format=tar --prefix=xxx master | tar x -C ~/public_html
Il fait l'affaire, mais il y a une courte fenêtre lorsque le site n'est pas disponible. Faire git pull
directement dans le vôtre ~/bar.com
exposera le git .git
, assurez-vous de le bloquer dans votre serveur http ou de conserver .git
quelque part plus haut dans la hiérarchie des répertoires, ie. quelque chose comme:
~
\
- repo
\
- .git
- bar.com
\
- your content