Bazaar pour les sites web3 min read

J’ai décidé du fusionner fortintam.com/fortintam.com avec fortintam.com, ça m’agaçait d’avoir plusieurs comptes. J’ai également rafraîchi légèrement l’apparence de ma page personnelle, nettoyé un peu de code, etc. Mais surtout, j’ai fait tout ça avec Bazaar. On dirait que les systèmes de gestion de code décentralisés, du moins celui là grâce à sa simplicité, ont été conçus pour les sites web. Désormais, plus question pour moi de garder des fichiers fantômes, ou de donner des numéros de «versions» arbitraires à mes redesigns de page web; je n’ai plus besoin de garder des archives dédoublées à n’en plus finir. Si jamais je fais une grosse bêtise ou que je ressens un moment de nostalgie, mon système de version de code (bazaar) me permettra de remonter le temps à volonté.
C’est brillant. Je vais utiliser ça graduellement pour maintenir tous mes sites (c’est déjà en place pour le site de kirika, avec le bonus que si Etienne modifie des pages, je pourrai fusionner les changements sans même y réfléchir).
Quand on y pense, un site web c’est du code source, autant le gérer avec un système de versionnement!

Petit guide

À la demande de Jejem, voici comment j’ai fait tout ça. Bien sûr, un backup complet du serveur avant de commencer.
Hmm, ben tu prends de la mayonnaise, des pâtes… puis pour faire le tri dans ce qui était accumulé dans jeff.ecchi quand c’était qu’un compte de stockage; tout ce qui survit est déplacé dans un sous-dossier public. Ensuite, toujours avec nautilus (parce qu’en ligne de commande serait plus long et plus dangereux), tu déplaces tout le contenu de kiddo vers jeff, tu effaces kiddo lorsque le dossier est vide, et tu modifies les vhosts d’apache comme ceci avant de saupoudrer légèrement de fromage parmesan:

<VirtualHost *>
 ServerName fortintam.com
 ServerAlias fortintam.com
 Redirect permanent / https://fortintam.com/
</VirtualHost>

Ensuite, en ssh dans le dossier sur le serveur (jeff, qui contient maintenant tout le site),
bzr init
Puis, ajouter les fichiers/dossiers du site à versionner (ne pas inclure des trucs qui ne le devraient pas, genre mon dossier à fichiers temporaires public):
bzr add machin autremachin dossiertruc
Si on a ajouté un peu trop de fichiers par erreur, on peut corriger (tant qu’on a pas fait de «commit») avec:
bzr remove --keep machin
Finalement quand on est sûr de ce qu’on fait, en propage la première révision:
bzr commit
Après, sur ma machine de travail, je peux récupérer la dernière version du site:
bzr checkout bzr+ssh://kirika/home/jeff site-nekohayo
Et faire toutes les opérations que je veux avec bazaar sur ma machine de travail (add, rename, remove, modifier les fichiers, etc) et faire autant de «bzr commit» que je veux localement. À la toute fin, je renvoie toutes les modifications (avec historique complet!) sur le serveur, avec une commande du style:
bzr push bzr+ssh://kirika/home/jeff
Pourquoi bzr+ssh? Il est vrai que je pourrais faire un «bzr checkout https://fortintam.com» (oui, bazaar fonctionne même à travers http, sans aucune configuration nécessaire, excepté s’assurer que le serveur HTTP a des permissions suffisantes sur le dossier «.bzr»!), mais j’ai préféré par SSH car beaucoup plus rapide, sécuritaire, et puis ça me permet de pas laisser tout le monde récupérer le code de mon site web (quoique je pourrais le faire dans l’avenir, je crois pas qu’il y ait quelque chose de sensible là dedans).


Comments

10 responses to “Bazaar pour les sites web3 min read

  1. Ca serait intéressant de savoir comment t’as fait pour gérer ça 😉

  2. Voilà qui est fait, j’ai incorporé plus de détails dans le billet. Ça aide?

  3. Non, il faut renommer, effacer, etc, en utilisant le vcs (comme tout autre système que j’ai connu jusqu’à présent, soit CVS et Subversion).
    Bazaar le détectera pas tout seul, du moins pas selon ce que je comprends des VCS. D’un autre côté, il faut bien que tu le fasses, tant qu’à le faire, pour deux raisons que je vois à première vue:
    – si tu fais un site collaborativement, tu veux que les autres puissent savoir que ton fichier a été renommé; voire, ils devraient même pas avoir à le savoir!
    – la solution proposée ici permet d’avoir un historique complet et incrémental, te permettant de revenir à l’état *exact* dans lequel ton site était à n’importe quelle date versionnée, incluant les noms de fichiers et tout. Je trouve ça tout de même assez fascinant.
    D’ailleurs, l’espace disque est cheap de nos jours (*tousse*) et on ne devrait pas avoir à se préoccuper de multiples versions, surtout que seuls les changements («deltas») sont sauvegardés, et que je ne versionne pas les fichiers lourds qui ne font pas strictement partie du design (blog, galerie, vidéos).
    Un exemple par rapport au fait que renommer ses fichiers sans passer par le vcs, c’est pas bien:
    jeff@kaname:~/trunks/foo$ bzr init
    jeff@kaname:~/trunks/foo$ touch pee
    jeff@kaname:~/trunks/foo$ bzr add pee
    added pee
    jeff@kaname:~/trunks/foo$ bzr commit
    Committing to: /home/jeff/trunks/foo/
    added pee
    Committed revision 1.
    jeff@kaname:~/trunks/foo$ mv pee poo
    jeff@kaname:~/trunks/foo$ bzr status
    removed:
    pee
    unknown:
    poo

  4. Pour le vhost c’est plutôt
    ServerName fortintam.com
    ServerAlias fortintam.com
    Redirect permanent / https://fortintam.com/
    Sinon Apache risque de pas être content 🙂
    Niveau explications, tu m’a perdu au niveau de “Et faire toutes les opérations que je veux avec bazaar sur ma machine de travail (add, rename, remove, modifier les fichiers, etc) et faire autant de «bzr commit» que je veux localement. À la toute fin, je renvoie toutes les modifications (avec historique complet!) sur le serveur”
    Faut faire un bzr add/remove/rename à chaque fois qu’on modifie un fichier du site ?! On peut pas juste faire toutes les modifs qu’on a besoin en local et envoyer tout ça sur le serveur en un coup après ?

  5. Ton blog mange tout ce qui ressemble à un tag HTML. Pas bien.

  6. azmeuk Avatar
    azmeuk

    Hum tu as nettoyé ton code mais ta page de dessins ne marche plus 😀 Sinon j’aime bien la nouvelle gueule de ton site. Et peut-être que centré il serait encore mieux.

  7. C’est toujours aussi peu clair dans ma tête, perso il me semblerait BIEN plus simple de faire les modifs comme on veut de son côté sans avoir à en plus se soucier de tenir à jour le truc (merde si on utilise un machin dans ce genre c’est justement pour pas avoir à noter les changements manuellement nan ?)… enfin je dois passer à côté du point (et je pense à autre chose là surtout à cette PUTAIN DE MUSIQUE DE NOËL QUE J’ENTENDS DANS LA CUISINE là, me donne des envies de meurtres façon Higurashi)

  8. Oui, ne pas utiliser de vcs est évidemment plus simple si tu n’as pas comme but de préserver l’historique complet de tes designs ou de coder collaborativement.

  9. Mais justement, utiliser un VCS serait l’idéal pour FraggantDélit par exemple (où je file occasionnellement quelques lignes de code/HTML/design à azmeuk) ; préserver l’historique est aussi très intéressant, c’est juste que je trouve la méthode de faire telle que tu l’explique fastidieuse.

  10. hm, ça t’arrive souvent d’ajouter des nouveaux fichiers et d’en renommer? (je te signale que si tu fais simplement des modifs dans des fichiers existants, pas de commande particulière à faire, ça bazaar le détecte, comme tout autre vcs sauf cvs qui est trop con à mon souvenir)