{"id":3815,"date":"2019-09-24T18:00:51","date_gmt":"2019-09-24T16:00:51","guid":{"rendered":"https:\/\/www.unicoda.com\/?p=3815"},"modified":"2019-09-13T15:27:35","modified_gmt":"2019-09-13T13:27:35","slug":"dotfiles-git-et-rcm","status":"publish","type":"post","link":"https:\/\/www.unicoda.com\/?p=3815","title":{"rendered":"dotfiles, git et rcm"},"content":{"rendered":"\n<p>Dans un billet r\u00e9cent sur le th\u00e8me des dotfiles, j&rsquo;\u00e9voquais ma migration prochaine de stow vers <a href=\"https:\/\/github.com\/thoughtbot\/rcm\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"rcm (s\u2019ouvre dans un nouvel onglet)\">rcm<\/a> comme programme de gestion de mes fichiers de configuration. C&rsquo;est d\u00e9sormais chose faite et j&rsquo;utilise \u00e0 pr\u00e9sent rcm \u00e0 la place de stow.<\/p>\n\n\n\n<p>Parmi les am\u00e9liorations notables apport\u00e9es par rcm, la principale est la possibilit\u00e9 de d\u00e9ployer l&rsquo;ensemble de mes dotfiles en une commande, et non plus en ex\u00e9cutant une commande stow par dossier, ou programme. Je l&rsquo;avais \u00e9voqu\u00e9, l&rsquo;organisation de mon d\u00e9p\u00f4t git a \u00e9galement gagn\u00e9 en clart\u00e9, la seule diff\u00e9rence \u00e9tant l&rsquo;absence de point devant les fichiers ou dossiers \u00e0 la racine du d\u00e9p\u00f4t.<\/p>\n\n\n\n<p>La migration d&rsquo;un syst\u00e8me vers l&rsquo;autre s&rsquo;est d\u00e9roul\u00e9 sans grande difficult\u00e9. Comme souvent, la premi\u00e8re \u00e9tape consiste \u00e0 installer le programme. Pour une fois, celui-ci n&rsquo;est pas disponible par d\u00e9faut dans les paquets d&rsquo;Arch Linux. Je passe donc par yaourt pour r\u00e9cup\u00e9rer le paquet dans le d\u00e9p\u00f4t AUR.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">yaourt -S rcm<\/pre>\n\n\n\n<p>L&rsquo;installation du paquet rcm mets \u00e0 disposition <a rel=\"noreferrer noopener\" aria-label=\"quatre utilitaires (s\u2019ouvre dans un nouvel onglet)\" href=\"https:\/\/github.com\/thoughtbot\/rcm#programs\" target=\"_blank\">quatre utilitaires<\/a>: rcup, rcdn, mkrc et lsrc. Je ne rentre pas dans les d\u00e9tails de chacun des programmes; le programme principal \u00e0 utiliser est rcup, programme responsable de l&rsquo;installation et de la mise \u00e0 jour des dotfiles. Avant d&rsquo;ex\u00e9cuter la commande de d\u00e9ploiement, j&rsquo;ai commenc\u00e9 par changer la structure de mon d\u00e9p\u00f4t git dans une branche d\u00e9di\u00e9e. Une fois la structure satisfaisante, j&rsquo;ai fusionn\u00e9 l&rsquo;ensemble dans la branche master. Avant d&rsquo;effectuer la fusion, il faut s&rsquo;assurer de garder un terminal ouvert, car en ouvrir un avant d&rsquo;avoir effectuer le red\u00e9ploiement va conduire \u00e0 l&rsquo;ouverture d&rsquo;un terminal non configur\u00e9, dans mon cas, ouverture sur l&rsquo;interface de premi\u00e8re configuration de oh my zsh.<\/p>\n\n\n\n<p>Revenons \u00e0 nos dotfiles. Apr\u00e8s fusion de mes branches, tous mes fichiers dotfiles existants sont d\u00e9sormais des liens cass\u00e9s vers l&rsquo;ancien emplacement des fichiers. Il est donc plus que temps de r\u00e9tablir les liens pour coller \u00e0 la nouvelle structure du d\u00e9p\u00f4t. Pour cela, j&rsquo;utilise donc rcup avec les param\u00e8tres :<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>x pour exclure un fichier<\/li><li>d pour sp\u00e9cifier l&#8217;emplacement du dossier dotfiles<\/li><li>f pour forcer l&rsquo;installation (supprime le fichier existant et le remplace par un lien vers le fichier dans notre dossier dotfiles).<\/li><\/ul>\n\n\n\n<p>Ce qui donne donc quelque chose comme cela :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">rcup -x README.md -x LICENSE -d \/chemin\/vers\/dossier\/dotfiles -f<\/pre>\n\n\n\n<p>J&rsquo;ai eu quelques erreurs \u00e0 l&rsquo;ex\u00e9cution, \u00e9tant donn\u00e9 que stow avait mis en place des liens symboliques directement sur certains r\u00e9pertoires. Les r\u00e9pertoires ayant chang\u00e9 d&#8217;emplacement, rcup n&rsquo;arrive pas \u00e0 y acc\u00e9der pour cr\u00e9er le lien symbolique du fichier de configuration dans le dossier.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">mkdir: ~\/.config\/terminator: Input\/output error\nln: ~\/.config\/terminator\/config: No such file or directory\nmkdir: ~\/.zsh: Input\/output error\nln: ~\/.zsh\/keychain.zsh: No such file or directory\nmkdir: ~\/.zsh: Input\/output error\nln: ~\/.zsh\/security.zsh: No such file or directory<\/pre>\n\n\n\n<p>Pour corriger ces erreurs, j&rsquo;utilise donc unlink pour supprimer les liens symboliques existants et j&rsquo;ex\u00e9cute une nouvelle fois mon d\u00e9ploiement via rcup.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">unlink ~\/.config\/terminator<\/pre>\n\n\n\n<p>Au final, la migration de stow vers rcm m&rsquo;aura demand\u00e9 une petite heure environ et n&rsquo;aura pas pr\u00e9sent\u00e9 de difficult\u00e9 particuli\u00e8re. Compter \u00e9galement plusieurs dizaines de minutes, quelques heures peut-\u00eatre, r\u00e9parties sur plusieurs jours afin de me documenter, de comprendre le fonctionnement des outils et d&rsquo;arr\u00eater ma d\u00e9cision. La nouvelle structure de mon d\u00e9p\u00f4t dotfiles me convient davantage et je trouve le fonctionnement de rcm plus simple dans son utilisation basique, mais proposant n\u00e9anmoins des fonctionnalit\u00e9s avanc\u00e9es qu&rsquo;il me faudra \u00e9tudier pour \u00e9ventuellement d\u00e9cider d&rsquo;en faire usage. Ma pr\u00e9f\u00e9rence va donc \u00e0 rcm et l&rsquo;avenir nous dira si mon choix \u00e9tait pertinent. Enfin, il serait malvenu de tirer un trait d\u00e9finitif sur stow, qui doit rester un outil \u00e0 ma disposition, si un cas d&rsquo;utilisation ad\u00e9quat se pr\u00e9sente.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dans un billet r\u00e9cent sur le th\u00e8me des dotfiles, j&rsquo;\u00e9voquais ma migration prochaine de stow vers rcm comme programme de gestion de mes fichiers de configuration. C&rsquo;est d\u00e9sormais chose faite et j&rsquo;utilise \u00e0 pr\u00e9sent rcm \u00e0 la place de stow. Parmi les am\u00e9liorations notables apport\u00e9es par rcm, la principale est la possibilit\u00e9 de d\u00e9ployer l&rsquo;ensemble &hellip; <a href=\"https:\/\/www.unicoda.com\/?p=3815\" class=\"more-link\">Continuer la lecture<span class=\"screen-reader-text\"> de &laquo;&nbsp;dotfiles, git et rcm&nbsp;&raquo;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[316,31,5],"tags":[92,297,15,451],"class_list":["post-3815","post","type-post","status-publish","format-standard","hentry","category-configuration","category-installation","category-terminal","tag-configuration","tag-dotfiles","tag-git","tag-rcm"],"_links":{"self":[{"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/posts\/3815","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3815"}],"version-history":[{"count":11,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/posts\/3815\/revisions"}],"predecessor-version":[{"id":3833,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=\/wp\/v2\/posts\/3815\/revisions\/3833"}],"wp:attachment":[{"href":"https:\/\/www.unicoda.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3815"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3815"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.unicoda.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3815"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}