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