おなまえ
Eメール
タイトル
コメント
参照先
暗証キー (英数字で8文字以内)
画像認証 (右画像の数字を入力) 画像認証
Re: gitの使い方(初級編) 投稿者:tinker 投稿日:2014/03/28(Fri) 21:52 home No.4223

新しい掲示板書き込みできるかな。

タイトルに(初級編)と書いていますが、私もこのくらいしか知らないですm(__)m

少し特殊な例かもしれませんが、いつもお世話になっているNelsonさんのgitを例に進めます。
http://www.eewiki.net/display/linuxonarm/BeagleBone+Black" target="_blank">http://www.eewiki.net/display/linuxonarm/BeagleBone+Black
上記ページには、kernelソースを準備するには、以下の手順で行うようになっています。

(1) git clone git://github.com/RobertCNelson/linux-dev.git
(2) cd linux-dev/
(3) git checkout origin/am33x-v3.12 -b tmp
(4) ./build_kernel.sh

(1)について
 git clone:git://github.com/RobertCNelson/linux-dev.gitをローカル(手元のPCなど)にクローンします。
(3)について
 リモートブランチであるorigin/am33x-v3.12から、tmpというローカルブランチを作成しcheckoutします。
 ローカルブランチの名前はtmpになっていますが、自分で判別しやすい名前にしておけばいいかと思いいます。
 どのようなリモートブランチがあるかは、(3)を実行する前に git branch -a とすると確認することができます。
 私のところでは以下のようになっています
 git branch -a
308(origin/am33x-v3.8のローカルブランチ)
312(ローカルブランチ)
313(ローカルブランチ)
314(ローカルブランチ)
* master
remotes/origin/HEAD -> origin/master
remotes/origin/am33x-v3.1
remotes/origin/am33x-v3.11
remotes/origin/am33x-v3.12
remotes/origin/am33x-v3.13
remotes/origin/am33x-v3.14
remotes/origin/am33x-v3.2
remotes/origin/am33x-v3.6
remotes/origin/am33x-v3.7
remotes/origin/am33x-v3.8
remotes/origin/master

(4)について
 (3)を行ったあとに(4)を行えば、kernelが完成します。
 めでたしですが、せっかくcloneしたので今後も使うための方法に続きます。


Re: gitの使い方(初級編) 投稿者:tinker 投稿日:2014/03/28(Fri) 21:53 home No.4224

(5) git checout
 こんな感じで使います。
 git checkout origin/am33x-v3.12 -b 312
 git checkout origin/am33x-v3.13 -b 313
 作成済のbranchに移動するには
 git checkout masterとかgit checkout 312などとします。
 checkoutは、リモートブランチだけではなく、tag(後述)やハッシュ値でも可能です。
 
(6) git tag
 git tag と打つと以下のように表示されると思います。
 2.6.38-d5
 2.6.38-rc1-d0
 2.6.38-rc1-d1
 ーーー
 沢山あるようなので少し整理して表示します。
 git tag | grep 3.12
 3.12-bone8
 3.12-rc1-bone1
 3.12-rc2-bone2
 ・・・
 3.12.12-bone12
  ーーー
 checkoutのところに書いたように、tagからローカルブランチを作成することも出来ます。
 git checkout 3.12.12-bone12 -b 31212
 
(7) git pull
 せっかくcloneしたので、今後も使い続けます。
 クローン先の変更を取り込むには、以下のようにします。
 cd linux-dev
 git pull
 
 pullしたあと、他のブランチにcheckoutした時に以下のようなメッセージが出た時には、checkout後にもう一度git pullします。
 Your branch is behind 'origin/am33x-v3.14' by 2 commits, and can be fast-forwarded.
 
(8) ./build_kernel.sh
 Nelsonさんのgitでは、checkoutしただけでは~KERNELのソースは変更されません。
 変更するには、再度./build_kernel.shを行う必要があるようです。
 
(9) ローカルでの変更をすべて元に戻す
 git checkout .(最後のドットが重要です)
 ./build_kernel.shを実行するとmenuconfigが立ち上がります。ここで.configを変更した場合、他ブランチにcheckout出来ないようです。
 そんな時には、git checkout . を実行後に他ブランチにcheckoutします。
 
(10) 不要なブランチを削除
 git branch -d(または-D) ローカルブランチ名
 
(11) git diff
 ファイル、ブランチ間、タグ間など、どのような変更があったのかを表示できます。
 たとえばtag間のdiffは
 git diff 3.12.11-bone12 3.12.13-bone12 とします。
 以下のようにすればpatchの作成もできます。
 git diff 3.12.11-bone12 3.12.13-bone12 > 11_13.diff
 ごにょごにょする時には便利です。


Re: gitの使い方(初級編) 投稿者:tinker 投稿日:2014/03/29(Sat) 17:35 home No.4229

少し前に、Nelsonさんのソースを3.12.12に戻すにはどうしたらいいのかって質問がsyuさんから出ました。
いい加減な私は、version.shを修正して./build_kernel.shすれば出来ますよって答えました。
正しくは(6)のようにするべきですねm(__)m
また、twlさんから、新しいrtパッチが出てるけど、3.12.14のソースはないよねって話もありました。
なければ作ってみるかってことでやってみます。
方法は上記のいい加減なやつです。

(a) 新しいブランチを作ります
 git checkout 3.12.13-bone12 -b 31214
(b) version.shを修正します
 13 → 14
(c) ./build_kernel.shを実行します
(d) 出来ました
 root@debian-bbb:~# uname -a
 Linux debian-bbb 3.12.14-rt23_140329 #1 SMP PREEMPT RT Sat Mar 29 16:54:34 JST 2014 armv7l GNU/Linux
(e) 31214を削除及び変更を元に戻しておきます
 git branch -d 31214
 git checkout .

こんな感じで色々遊べるようです。
今回は存在しない3.12.14を作ってみました。
ただ3.12は2016までサポートがあるみたいなので、焦って3.12.14を作る必要はないと思います。


Re: gitの使い方(初級編) 投稿者:yo 投稿日:2014/03/30(Sun) 13:30 home No.4232

tinkerさん

丁寧な解説ありがとうございます。
存在しない新しいブランチを作る方法は参考になりました。これでBBB専用のパッチがあたったカーネルソースが生成されるという理解でよいのでしょうか。


Re: gitの使い方(初級編) 投稿者:tinker 投稿日:2014/03/30(Sun) 15:02 home No.4235

yoさん

>これでBBB専用のパッチがあたったカーネルソースが生成されるという理解でよいのでしょうか。

はい。3.12.14にBBB専用のパッチが当たったソースが生成されます。
build_kernel.shから呼び出されるgit.shやpatch.shが全てやってくれます。賢いスクリプトですね。
少し端折って書いていますが、rtパッチは自分で当てるか、patch.shを修正する必要があります。


Re: gitの使い方(初級編) 投稿者:yo 投稿日:2014/03/30(Sun) 19:19 home No.4237

> uild_kernel.shから呼び出されるgit.shやpatch.shが全てやってくれます。賢いスクリプトですね。

確かに、あのスクリプトは凄いですね。初めて実行させた時、あまりの面倒見の良さに感嘆した覚えがあります。
rtパッチ対応の修正も可能でしょうね。



mail

- YY-BOARD -