Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
doc:systeme:git:tp-gerer-son-site-web [06/03/2014 18:29] captnfab [Opérations courantes] |
doc:systeme:git:tp-gerer-son-site-web [18/09/2015 17:59] (Version actuelle) milou [Opérations courantes] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Gérer son site web avec Git ====== | + | ====== TP : Gérer son site web avec Git ====== |
* Objet : Gérer son site web avec Git | * Objet : Gérer son site web avec Git | ||
* Niveau requis : {{tag>avisé}} | * Niveau requis : {{tag>avisé}} | ||
* Commentaires : //Vous gérez un ou plusieurs sites web sur votre serveur. Vous voulez l'administrer avec git pour faciliter les mises-à-jour/patch/etc.// | * Commentaires : //Vous gérez un ou plusieurs sites web sur votre serveur. Vous voulez l'administrer avec git pour faciliter les mises-à-jour/patch/etc.// | ||
- | * À savoir : Utilisation basique de git FIXME :-) | + | * À savoir : [[:doc:systeme:git:git|Utilisation de git]] :-) |
- | * Suivi : {{tag>en-chantier}} | + | * Suivi : {{tag>}} |
- | * Création par **captnfab** 06/03/2014 | + | * Création par [[user>captnfab]] 06/03/2014 |
* Testé par <...> le <...> FIXME | * Testé par <...> le <...> FIXME | ||
- | * Commentaires sur le forum : [[url | Lien vers le forum concernant ce tuto]] ((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) FIXME | + | * Commentaires sur le forum : [[https://debian-facile.org/topic-8596-wiki-tp-gerer-son-site-web-avec-git-page-1.html | ici]] ((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) |
**Nota :** | **Nota :** | ||
Ligne 33: | Ligne 33: | ||
Installer **git** sur le **serveur** et le **client** : | Installer **git** sur le **serveur** et le **client** : | ||
- | <code=root>apt-get install git</code> | + | <code root>apt-get install git</code> |
===== Mise en place ===== | ===== Mise en place ===== | ||
Ligne 42: | Ligne 42: | ||
Sur le **serveur** : | Sur le **serveur** : | ||
- | <code user>mkdir -p /srv/monsiteweb/www.git | + | <code user>mkdir -p /srv/monsiteweb/www.git</code> |
- | mkdir www.git | + | <code user>mkdir www.git</code> |
- | git init --bare www.git</code> | + | <code user>git init --bare www.git</code> |
=== Configuration des hooks sur le serveur === | === Configuration des hooks sur le serveur === | ||
Ligne 72: | Ligne 72: | ||
Le rendre exécutable : | Le rendre exécutable : | ||
<code user>chmod +x /srv/monsiteweb/www.git/hooks/post-update</code> | <code user>chmod +x /srv/monsiteweb/www.git/hooks/post-update</code> | ||
+ | |||
+ | <note idée>Si vous utilisez un moteur de blog statique comme [[http://blog.getpelican.com/|pelican]] ou [[http://posativ.org/acrylamid/|acrylamid]], vous pouvez lancer la recompilation du blog depuis ce fichier, juste après le checkout.</note> | ||
=== Clonage du dépôt sur le client === | === Clonage du dépôt sur le client === | ||
Sur le **client** : | Sur le **client** : | ||
- | <code user>mkdir -p ~/projets/mon-site/ | + | <code user>mkdir -p ~/projets/mon-site/</code> |
- | cd ~/projets/mon-site/ | + | <code user>cd ~/projets/mon-site/</code> |
- | git clone toto@serveur:/srv/monsiteweb/www.git</code> | + | <code user>git clone toto@serveur:/srv/monsiteweb/www.git</code> |
==== Création des branches ==== | ==== Création des branches ==== | ||
Ligne 92: | Ligne 94: | ||
* Indiquer à git de les prendre en compte : | * Indiquer à git de les prendre en compte : | ||
- | <code user>git add . | + | <code user>git add .</code> |
- | git commit -m 'Version initiale'</code> | + | <code user>git commit -m 'Version initiale'</code> |
* Renommer la branche en //upstream// : | * Renommer la branche en //upstream// : | ||
Ligne 105: | Ligne 107: | ||
* Créer la branche //dev// basée sur la branche //upstream// : | * Créer la branche //dev// basée sur la branche //upstream// : | ||
- | <code user>git checkout upstream | + | <code user>git checkout upstream</code> |
- | git branch dev | + | <code user>git branch dev</code> |
- | git checkout dev</code> | + | <code user>git checkout dev</code> |
* Appliquer les modifications voulues. | * Appliquer les modifications voulues. | ||
<note info>Par exemple : | <note info>Par exemple : | ||
- | <code user>rm README VERSION COPYING</code> | + | <code user>rm README VERSION COPYING</code></note> |
* Valider les changements et envoyer le résultat sur le dépôt distant : | * Valider les changements et envoyer le résultat sur le dépôt distant : | ||
- | <code user>git commit -a -m 'Préparation à la mise en test' | + | <code user>git commit -a -m 'Préparation à la mise en test'</code> |
- | git push -u origin dev</code> | + | <code user>git push -u origin dev</code> |
Le hook de la branche dev devrait alors s'activer automatiquement et placer les sources dans le dossier de dev sur le serveur. | Le hook de la branche dev devrait alors s'activer automatiquement et placer les sources dans le dossier de dev sur le serveur. | ||
Ligne 123: | Ligne 125: | ||
* Créer la branche //prod// basée sur la branche //dev// : | * Créer la branche //prod// basée sur la branche //dev// : | ||
- | <code user>git checkout dev | + | <code user>git checkout dev</code> |
- | git branch prod | + | <code user>git branch prod</code> |
- | git checkout prod</code> | + | <code user>git checkout prod</code> |
Ligne 139: | Ligne 141: | ||
//Ou correction d'une fonctionnalité indésirable…// | //Ou correction d'une fonctionnalité indésirable…// | ||
- | - Récupérer des versions à jour du dépôt <code user>git checkout dev | + | * Récupérer des versions à jour du dépôt : |
- | git pull</code> | + | <code user>git checkout dev</code> |
- | - Éditer la branche dev | + | <code user>git pull</code> |
- | - Valider vos modifications <code user>git commit -a -m 'bug corrigé'</code> | + | * Éditer la branche dev |
- | - Soumettre vos modifications <code user>git push</code> | + | * Valider vos modifications : |
- | - Lorsque le résultat est convenable, mettre à niveau la branche master<code>git checkout master | + | <code user>git commit -a -m 'bug corrigé'</code> |
- | git merge dev -m 'intégration de la correction de bug' | + | * Soumettre vos modifications |
- | git push</code> | + | <code user>git push</code> |
+ | * Lorsque le résultat est convenable, mettre à niveau la branche master | ||
+ | <code user>git checkout master</code> | ||
+ | <code user>git merge dev -m 'intégration de la correction de bug'</code> | ||
+ | * Serrer les fesses et soumettre le résultat : | ||
+ | <code user>git push</code> | ||
==== Mise à jour depuis upstream ==== | ==== Mise à jour depuis upstream ==== | ||
- | - Récupérer les nouvelles sources dans la branche //upstream//. Par exemple : <code user>git checkout upstream | + | * Récupérer les nouvelles sources dans la branche //upstream//. |
- | rm -r * | + | <code user>git checkout upstream</code> |
- | wget 'http://download.dokuwiki.org/src/dokuwiki/dokuwiki-stable.tgz' -O/tmp/dokuwiki-stable.tgz | + | <note info>Par exemple : <code user>git checkout upstream</code> |
- | tar xf /tmp/dokuwiki-stable.tgz --strip-components 1 | + | <code user>rm -r *</code> |
- | git add --all . | + | <code user>wget 'http://download.dokuwiki.org/src/dokuwiki/dokuwiki-stable.tgz' -O/tmp/dokuwiki-stable.tgz</code> |
- | git commit -a -m 'nouvelle version upstream: Binky (2013-12-08)' | + | <code user>tar xf /tmp/dokuwiki-stable.tgz --strip-components 1</code> |
- | git push</code> | + | <code user>git add --all .</code> |
- | - Importer les changements dans la branche de dev : <code user>git checkout dev | + | <code user>git commit -a -m 'nouvelle version upstream: Binky (2013-12-08)'</code></note> |
- | git rebase upstream</code> Corriger les erreurs éventuelles de fusion. Par exemple : ''git rm VERSION; git rebase --continue''. \\ Puis soumettre la nouvelle version : <code user>git push --force</code> | + | * Soumettre le résultat : |
- | - Fusionner la branche dev opérationnelle depuis la branche prod : <code user>git checkout prod | + | <code user>git push</code> |
- | git merge dev -m 'intégration de la nouvelle version upstream' | + | * Importer les changements dans la branche de dev : |
- | git push</code> | + | <code user>git checkout dev</code> |
+ | <code user>git rebase upstream</code> | ||
+ | <note important>Corriger les erreurs éventuelles de fusion. Par exemple : | ||
+ | <code user>git rm VERSION</code> | ||
+ | <code user>git rebase --continue</code></note> | ||
+ | * Puis soumettre la nouvelle version : | ||
+ | <code user>git push --force</code> | ||
+ | * Fusionner la branche dev opérationnelle depuis la branche prod : | ||
+ | <code user>git checkout prod</code> | ||
+ | <code user>git merge dev -m 'intégration de la nouvelle version upstream'</code> | ||
+ | * Serrer les fesses et soumettre le résultat : | ||
+ | <code user>git push</code> | ||
+ | |||
+ | ===== Références ===== | ||
+ | |||
+ | * http://www.git-scm.com/book/fr | ||
+ | * http://toroid.org/ams/git-website-howto (en) | ||
+ | * https://www.kernel.org/pub/software/scm/git/docs/githooks.html (en) |