gitを使って、レポジトリの一部抽出forkしてみました

4,121 views

Published on

gitを使って、レポジトリの一部抽出forkしてみました

Published in: Technology

gitを使って、レポジトリの一部抽出forkしてみました

  1. 1. gitを使って、   レポジトリの一部抽出forkしてみました 宮川 貴子@NEKOGET CodeIgniterのユーザーガイドな話でもあります  CodeIgniter®    The  CodeIgniter  mark  is  owned  and  may  be  registered  by  EllisLab,  Inc          .
  2. 2. 今日のお話 GitでCodeIgniterのユーザガイドを抽出したお話をします   (1)やりたいこと、やっちゃったことのお話   –  ユーザガイドだけをforkしたい   –  本家の変更は当然追跡、mergeしたい   –  安定運用   (2)蛇足なお話      
  3. 3. お話する人 宮川 貴子   TwiFer  @NEKOGET   Facebook  hFps://www.facebook.com/NEKOGET   ネコネットデザイン事務 hFp://works.nekoget.net              Gitと初めて出会ったのは、Git勉強会(2008年)          hFp://pneskin2.nekoget.com/press/?p=146     CodeIgniterと知り合い、楽しくコードを書いているうちに、5年を経過しました。   CodeIgniterへの愛に溢れた生活を送っています。   FuelPHPのドキュメント日本語化をやってます。     最近はCakePHP2とも仲良くしてます(^-­‐^)v   と
  4. 4. ユーザガイドだけをforkしたい やりたい事    ユーザガイドだけをforkしたい!    抽出したい!     forkした後…   本家の変更分はちゃんとmergeしたい!   変更は追いかけたい!   と
  5. 5. レポジトリの中の一部だけを追跡 と
  6. 6. 問われるMY検索能力……. 検索で使ったキーワード   •  「Git」   •  「Git  特定のフォルダだけ」   •  「Git  特定のフォルダ 抽出」   Gitマニュアルから発見   •  Git  マニュアル     •  hFp://git-­‐scm.com/docs/git-­‐filter-­‐branch     使用例を素敵なブログから発見   •  git  の特定ディレクトリをコミットログ等込みで別プロジェクトへ移動   –  hFp://subtech.g.hatena.ne.jp/secondlife/20101108/1289221814   と
  7. 7. レポジトリの中の一部だけを抽出 Git  マニュアル hFp://git-­‐scm.com/docs/git-­‐filter-­‐branch     と
  8. 8. git-­‐filter-­‐branchの機能 「各リビジョンにカスタムフィルタを適用し、<rev-­‐list  op_ons> に記載されている枝を書き換えることで、Gitの改訂履歴を書 き換えることができます」   Git  マニュアル hFp://git-­‐scm.com/docs/git-­‐filter-­‐branch  参照   Google  翻訳そのまんまですが…..   コミットログもソースコードも指定したフォルダだけになるよう にフィルターをかけてしまうことができてしまいます。   と
  9. 9. これが…. と
  10. 10. こうなる! ローカルレポジトリの中身は、   ユーザガイドのフォルダの中身だけになります。   と
  11. 11. 実践 CodeIgniter本体のclone     $  git  clone  git@github.com:EllisLab/CodeIgniter.git   と
  12. 12. Clone直後 CodeIgniter全体のフォルダがcloneさ れます。   $  git  branch   *  develop ブランチを確認。   開発最新のブランチ、developを確保   と
  13. 13. 抽出 $  git  filter-­‐branch  -­‐f  -­‐-­‐subdirectory-­‐filter   user_guide_src  HEAD user_guide_srcの部分が、フォルダの指定になります。    実行後、 user_guide_srcの中 身だけの状態になります。   $git  log ログもuser_guide_srcのものだ けになっています。   と
  14. 14. 本家レポジトリの変更をmergeしたい $  git  pull 抽出後のフォルダ内で、git  pullをした結果、   なんかおかしい……     •  ファイルが、user_guide_srcとcodeigniter丸ごとの それと混ざってる…..   •  $  git  status  してみたり、git  logしてみたりしてみた が、README.rstが変更されていたり…..   •  どうする? と
  15. 15. こうしたよ! 抽出後のローカルレポジトリから直接本今朝分を git  pullすることは無理。     1.  抽出前のローカルレポジトリでgit  pullする。   2.  抽出する   3.  作業レポジトリを抽出レポジトリからcloneする。   4.  作業レポジトリへ、抽出レポジトリから差分を mergeする。   と
  16. 16. 構成 •  GitHub  CodeIgniter  リモートレポジトリ   –  hFps://github.com/EllisLab/CodeIgniter   •  •  •  •  ローカル全部入りレポジトリ   ローカル抽出レポジトリ   ローカル作業用レポジトリ   GitHub作業用レポジトリ   –  hFps://github.com/NEKOGET/ci_user_guide_src   と
  17. 17. 抽出レポジトリを毎回作る 抽出レポジトリは本家差分を取得する都度生まれ変わる      ↑   都度cloneするのは大変なので   抽出するためのレポジトリは   ローカルcopyで作っちゃう   git-­‐filter-­‐branchコマンドで、   ユーザガイドだけを抽出     と
  18. 18. 抽出レポジトリの続き •  抽出レポジトリは、作業用レポジトリに本家差分を取り込むだけの役割      ↑   ユーザガイドの翻訳作業はこのレポジトリ   でブランチを作って行っています。   そしてそのコードはgithubで公開しています。     と
  19. 19. 抽出レポジトリのfork? 本家のコミットログもきちんと入っているログ hFps://github.com/NEKOGET/ci_user_guide_src/commits/develop_japanese/   と
  20. 20. 全体像 抽出用のフォルダは毎回、   全部入りのローカルレポジトリから   コーピーして作り直しています     つまり差分を取得する都度   (1)削除   (2)コピー   (3)抽出   を繰り返します。 と
  21. 21. 抽出レポジトリ更新の自動化 Cronで定期的に作り直しています  #!/bin/sh      cd  {全部入りCodeIgniterレポジトリ}      git  pull      rm  –irf {抽出レポジトリのパス}          cp  –r  {全部入りCodeIgniterレポジトリ}    {抽出レポジトリのパス}      cd  {抽出レポジトリのパス}          git  filter-­‐branch  -­‐f  -­‐-­‐subdirectory-­‐filter  {抽出レポジトリのパス}  HEAD と
  22. 22. 蛇足 •  蛇足的な事…..   と
  23. 23. CodeIgniter  ユーザガイド 日本語訳について
 ユーザガイドのライセンス   本家に問い合わせました   hFps://github.com/EllisLab/CodeIgniter/issues/2797     回答 「ライセンスはないよー。誰でも翻訳できちゃうよ」という回答をいただきました。   と
  24. 24. CodeIgniter2日本語ユーザガイドについて
   CodeIgniterユーザ会   日本語版レポジトリ   hFps://github.com/codeigniter-­‐jp/ci-­‐ja     流用可否については不明。   ライセンスは無い状態       TwiFerより   hFps://twiFer.com/NEKOGET/status/418046859542679552   と
  25. 25. とりあえず始める事はとても大事なこと。 現在翻訳中レポジトリ   •  hFps://github.com/NEKOGET/ci_user_guide_src   翻訳したユーザガイドを読みたい場合   •  hFp://pneskin2.nekoget.com/codeigniter/3/user_guide/index.html     と
  26. 26. CodeIgniterの情報をもっと増やしたい –  CodeIgniterの開発は止まっていない   –  本家にはマイルストーンにv.4.0.xがあるよ!   •  hFps://github.com/EllisLab/CodeIgniter/issues/milestones     v.4.0.x→ と
  27. 27. ☆ご清聴ありがとうございました☆
 参考LINK   •  Git   –  hFp://git-­‐scm.com   •  Try  Git   –  hFp://try.github.io/levels/1/challenges/1   •  git  の特定ディレクトリをコミットログ等込みで別プロジェクトへ移動   –  hFp://subtech.g.hatena.ne.jp/secondlife/20101108/1289221814   •  Git勉強会(動画)   –  hFp://pneskin2.nekoget.com/press/?p=146   •  CodeIgiter日本ユーザー会の翻訳レポジトリ   –  hFps://github.com/codeigniter-­‐jp/ci-­‐ja     と

×