{"id":389,"date":"2012-01-02T02:03:47","date_gmt":"2012-01-02T00:03:47","guid":{"rendered":"http:\/\/grummfy.be\/blog\/?p=389"},"modified":"2012-01-02T02:03:47","modified_gmt":"2012-01-02T00:03:47","slug":"git-fusion-de-sous-repertoire-et-de-lhistorique-dans-un-autre-depot","status":"publish","type":"post","link":"https:\/\/grummfy.be\/blog\/389","title":{"rendered":"Git fusion de sous r\u00e9pertoire et de l&rsquo;historique dans un autre d\u00e9p\u00f4t"},"content":{"rendered":"<p>Dans le cadre du projet <a title=\"Fire Soft Board\" href=\"http:\/\/grummfy.be\/blog\/key\/fsb\">Fire Soft Board<\/a> il a \u00e9t\u00e9 d\u00e9cid\u00e9 de cr\u00e9er un d\u00e9p\u00f4ts git d\u00e9di\u00e9 aux traductions. Pour ce faire il a fallut reprendre els fichiers mais aussi les placer dans des sous r\u00e9pertoires sp\u00e9cifiques. Voici la d\u00e9marche effectu\u00e9e.<br \/>\n<!--more--><br \/>\nOn d\u00e9sire prendre certaines sous r\u00e9pertoires et les transposer dans le nouveau d\u00e9p\u00f4ts.<br \/>\n\/Fire-Soft-Board-2\/tpl\/WhiteSummer\/img\/fr &#8211;&gt; pack\/fr\/tpl\/WhiteSummer\/img\/fr<br \/>\n\/Fire-Soft-Board-2\/lang\/fr &#8211;&gt; pack\/fr\/lang\/fr<\/p>\n<ol>\n<li>Clone du d\u00e9p\u00f4t principal<br \/>\n<code>git clone https:\/\/github.com\/FSB\/Fire-Soft-Board-2.git<br \/>\ncd Fire-Soft-Board-2<\/code><\/li>\n<li>Nous avons deux sous r\u00e9pertoires, nous cr\u00e9ons donc deux clone local<br \/>\n<code>cd ..<br \/>\ngit clone Fire-Soft-Board-2 fsb2-tpl-fr<br \/>\ngit clone Fire-Soft-Board-2 fsb2-lang-fr<\/code><\/li>\n<li>Il faut d\u00e9sormais nettoyer les fichiers mais aussi l&rsquo;historique des commits dont nous n&rsquo;avons plus besoin. Pour cela, nous allons simplement dire \u00e0 git de ne garder que les sous r\u00e9pertories dont nous avons besoin.<br \/>\n<code>cd fsb2-lang-fr<br \/>\ngit checkout dev<br \/>\ngit filter-branch --subdirectory-filter lang\/fr HEAD<br \/>\ngit gc --prune --aggressive<br \/>\ncd ..<br \/>\ncd fsb2-tpl-fr<br \/>\ngit checkout dev<br \/>\ngit filter-branch --subdirectory-filter tpl\/WhiteSummer\/img\/fr HEAD<br \/>\ngit gc --prune --aggressive<br \/>\ncd ..<br \/>\n<\/code><br \/>\ngit gc permet de nettoyer l&rsquo;historique et de compacter l&rsquo;index. Cela \u00e9vite ainsi de potentiel mauvaises surprise dans les logs.<\/li>\n<li>Il faut d\u00e9sormais fusionner ces fichiers ainsi que l&rsquo;historique qui va avec dans le d\u00e9p\u00f4t des traductions. Commen\u00e7ons par cloner celui-ci.<code>git clone https:\/\/github.com\/FSB\/FSB2-language-packs.git<br \/>\ncd FSB2-language-packs\/<\/code><\/li>\n<li>Fusionnons les ressources li\u00e9 au templates<code>git remote add -f tpl ..\/FSB2-tpl-fr\/<br \/>\ngit merge -s ours --no-commit tpl\/dev<br \/>\ngit read-tree --prefix=pack\/fr\/tpl\/WhiteSummer\/img\/fr -u tpl\/dev<br \/>\ngit commit -m'Ajout des sources et de l''historique du pack de langue fr des templates'<br \/>\n<\/code>On effectue un merge mais sans commiter. En mode de merging, on dit que le merge doit s&rsquo;effectuer non pas sur la base mais sur un sous r\u00e9pertoire pr\u00e9cis.<\/li>\n<li>Ensuite, on fait de m\u00eame pour la traductions en elle-m\u00eame.<code>git remote add -f lang ..\/FSB2-lang-fr\/<br \/>\ngit merge -s ours --no-commit lang\/dev<br \/>\ngit read-tree --prefix=pack\/fr\/lang\/fr -u lang\/dev<br \/>\ngit commit -m'Ajout des sources et de l''historique du pack de langue fr'<br \/>\n<\/code><\/li>\n<li>On finit par un petit nettoyage<code>git gc<br \/>\ngit remote rm lang<br \/>\ngit remote rm tpl<\/code><\/li>\n<\/ol>\n<p>Pour aller plus loin :<br \/>\nhttp:\/\/progit.org\/book\/fr\/ch6-4.html<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cet article explique comment fusionner des sous r\u00e9pertoire d&rsquo;un d\u00e9p\u00f4t existant dans un autre en en gardant l&rsquo;historique.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"webmentions_disabled_pings":false,"webmentions_disabled":false,"footnotes":""},"categories":[9,5],"tags":[56,107,28],"class_list":["post-389","post","type-post","status-publish","format-standard","hentry","category-dev","category-projet","tag-fsb","tag-git","tag-trucs-et-astuces"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/posts\/389","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/comments?post=389"}],"version-history":[{"count":3,"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/posts\/389\/revisions"}],"predecessor-version":[{"id":392,"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/posts\/389\/revisions\/392"}],"wp:attachment":[{"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/media?parent=389"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/categories?post=389"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/grummfy.be\/blog\/wp-json\/wp\/v2\/tags?post=389"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}