Pour répondre à l’avalanche des deux demandes, voici le script que j’utilise pour automatiser les “commits” (les versions) de mes manuscrits dans Mercurial.
Pour mémoire :
- J’utilise Mercurial comme outil de contrôle de versions, sur certains de mes écrits et fichiers, dont les articles du blog — ça permet de facilement suivre l’évolution d’un texte et, surtout, de retrouver une ancienne version si je change d’avis — moi, changer d’avis ? Jamais.
(Clic = grand)Je peux suivre la croissance, les branches mortes, les greffons, etc. de cet article en phase d’écriture, c’est complètement organique. - Pour que ce soit efficace, ça doit être automatisé. Sinon, j’oublie et après je pleure et file me réfugier sous la première coquille d’oeuf.
- Vous connaissez peut-être FlashBake, qui fonctionne avec Git à la place de Mercurial. Il fait beaucoup plus et mieux. Malheureusement, je n’ai jamais réussi à le faire fonctionner comme je le souhaitais et je n’ai pas vraiment besoin de ses plug-ins.
D’où mon script. Infiniment moins subtil, mais qui me suffit :
Avec quelques explications, pleines de rebondissements
#!/bin/sh
#
DATE="date '+%A %d %B %Y @ %Hh%M'
"
La variable DATE me permet de récupérer la date et l’heure et de les formater comme je le souhaite.
for r in /Users/david/Dropbox/perso/_drafts/
/Users/david/Documents/Fictions/lmsk/
/Users/david/Documents/Fictions/le-krau/
/Users/david/Dropbox/perso/scripts/scripts/
Ici, le script va boucler sur chaque chemin d’accès vers un dossier. J’ajoute simplement un dossier à cette liste pour l’inclure dans le script. Pour le moment, il surveille le dossier des scripts, les brouillons du blog et deux histoires que j’écris.
Et ensuite, me demandera le lecteur incapable d’attendre plus longtemps pour connaître le dénouement de cette trépidante aventure. Ensuite ? Mais ils vécurent heureux et eurent beaucoup de versions. Bien sûr :
do
/usr/local/bin/hg addremove -R "$r"
/usr/local/bin/hg commit -m "Automated commit @ $DATE" -R "$r"
done
J’ai carrément piqué l’idée ici. Ça fait quoi ? Pas grand-chose, mais tellement bien 😉
Il invoque les commandes Mercurial — avec un chemin absolu, sinon ça posait trop de souci et :
Addremove
se charge d’ajouter les nouveaux fichiers ou les fichiers modifiés et de retirer les fichiers supprimés, par rapport à la dernière version enregistrée.- La seconde ligne se charge du “commit”, l’action de dire à Mercurial “Hé, coco, tu te bouges ? Faut me créer une version de tout ça. Et magne-toi. Dis pas merci de te filer du boulot, surtout.” Le tout accompagné d’une phrase de description pour chaque commit.
Comme le commit est automatisé la phrase de description est elle aussi automatisée (subtil), elle affiche la date et l’heure :
Et elle est où ton automatisation, David ?
Pas là. Bien vu.
Sous OS X, depuis que Apple semble avoir maudit Cron, je ne connais pas mieux que Lingon pour facilement automtiser l’exécution d’un script. Lingon est proposé en deux versions : sur le Store et chez le dev (Lingon X). Je vous conseile cette dernière version qui, seule, permet d’exécuter les scripts en tant que root.
Dans Lingon X, donc, j’ai créé une action qui s’exécute toutes les 10 minutes, en tant que root (sinon, ça ne fonctionne pas).
Ainsi, toutes les 10 minutes mes dossiers sont surveillés par Mercurial qui fait sagement et en toute discrétion son travail. Je sais que je peux compter sur lui pour préserver mes versions — une façon technique de parler de brouillons, en ce qui me concerne — et il ne m’embête jamais.
Les modifs éventuelle entre deux versions sont perdues… sauf que je peux aussi faire des commits manuellement, si j’en ressens le besoin. Encore une fois, si vous n’avez pas lu l’article précédent : l’intérêt de cet outil comparé ç Versions livré avec OSX, c’est que :
- Je peux utiliser les applications de mon choix, pour éditer mes fichiers
- Je peux éditer le même fichier depuis n’importe quelle machine, y compris un iPad. Même sous Windows ou GNU/Linux.
- Je peux facilement préserver ces versions en ligne, sur un serveur sécurisé et privé gratuit comme BitBucket.
- Les versions ont cachées dans le dossier même où sont les fichiers. Il n’y a donc aucun risque de les perdre même quand je change de machine.
Créer un dépôt
Chaque dossier surveillé par Mercurial doit être “initialisé”, c’est-à-dire qu’on doit y créer un dépôt Mercurial, quoi. On peut le faire de façon graphique depuis SourceTree, mais là aussi je me suis créé un tout petit script bête, mais qui fait son travail et me permet de créer un dossier et tout le contenu typique dont j’ai besoin instantanément.
Faites-moi savoir si ça vous intéresse — tiens, les commentaires sont ouverts…
Il y a sûrement mieux ou plus subtil, n’hésitez pas à me proposer des améliorations — Tiens bis,les commentaires sont ouverts.
Pingback: Contrôle de version pour les auteurs | tiaaft
Pingback: Ulysses et Daedalus Touch | davidbosman.fr
Pingback: Sauvegardes et versions dans Ulysses et dans Scrivener | tiaaft
Pingback: Sauvegarde à l’ancienne de vos textes Ulysses III et Daedalus Touch | tiaaft
Pingback: Démarrer l’année en beauté : les backups | davidbosman.fr
Pingback: Mac(hine) à écrire | davidbosman.fr