Gitで自分でリポジトリ開始することって練習しかしたことないのでやってみた記録
普段は、誰かの作ったリポジトリをcloneしてローカルで少しいじって、git diffして結果をメールに投げるくらいしかやってない。
ちょっと変更を加える必要が出てきたkernelがあるので、リポジトリ管理にしてみることにした。
再履修にしても、いまさらだね(^^;。
というわけで、同じホスト内でやってみた。
同じHDDだし、同じパーティションだし、バックアップ的な意味はないけどね。
Git関連の最低限やっておく設定
名前とメールとカラー表示の設定。
$ git config --global user.name "kinneko" $ git config --global user.email kinneko@gmail.com $ git config --global colour.ui auto
マスタリポジトリの用意
からっぽのマスタリポジトリを用意。
$ mkdir -p GIT/AVV9000/kernel $ cd GIT/AVV9000/kernel/ ~/GIT/AVV9000/kernel$ git --bare init Initialized empty Git repository in /home/kinneko/GIT/AVV9000/kernel/
作業リポジトリの用意
$ mkdir -p AVV9000/kernel $ cd AVV9000/kernel/ ~/AVV9000/kernel$ git init Initialized empty Git repository in /home/kinneko/AVV9000/kernel/.git/ ~/AVV9000/kernel$ git status # On branch master # # Initial commit # nothing to commit (create/copy files and use "git add" to track)
作業リポジトリにkernel sourceを展開
~/AVV9000/kernel$ tar jxf ~/AVV/buildtest/BSPGB_kernel_20120601.tar.bz2 ~/AVV9000/kernel$ ls COPYING MAINTAINERS arch firmware ipc net sound CREDITS Makefile block fs kernel samples tools Documentation README crypto include lib scripts usr Kbuild REPORTING-BUGS drivers init mm security virt
ファイルをリポジトリ管理下に追加。
~/AVV9000/kernel$ git add . ~/AVV9000/kernel$ git status # On branch master # # Initial commit # # Changes to be committed: # (use "git rm --cached <file>..." to unstage) # # new file: COPYING # new file: CREDITS (snip) ~/AVV9000/kernel$ export LANG=ja_JP.UTF8 ~/AVV9000/kernel$ git commit
コンソールから、日本語でcommit -mしようとしたけどうまくいかん。
それでcommitだけ実行。
うへ、nano立ち上がりましたわ。ひどす。vimにしてくれ。
ファイル追加した履歴がでかすぎてかなわん。編集してられない。
保存せずに終了した。
Aborting commit due to empty commit message.
あらま。
Gitに外部エディタを指定する
環境変数のEDITORやGIT_EDITORを見ることもしてくれるようだけど、毎回設定していたりしないので、gitに設定。
$ git config --global core.editor 'vim -c "set fenc=utf-8"'
コミットする
~/AVV9000/kernel$ git commit -m "import from BSPGB_kernel_20120601.tar.bz2" [master (root-commit) c3a5d4f] import from BSPGB_kernel_20120601.tar.bz2 33687 files changed, 13661946 insertions(+), 0 deletions(-) create mode 100644 COPYING create mode 100644 CREDITS (snip) ~/AVV9000/kernel$ git log commit 5d73fee5bbf26293903fae7c884bd5570a861983 Author: kinneko <kinneko@gmail.com> Date: Wed Jul 18 10:25:39 2012 +0900 import from BSPGB_kernel_20120601.tar.bz2
直前のコミットメッセージを書き換える
ちょっとあんまりなので、書き換え。
~/AVV9000/kernel$ git commit --amend [master d5fc43d] import from BSPGB_kernel_20120601.tar.bz2 avv BSP1.2-20120612のkernel BSPGB_kernel_20120601.tar.bz2を展開 33687 files changed, 13661946 insertions(+), 0 deletions(-) create mode 100644 COPYING create mode 100644 CREDITS (snip) ~/AVV9000/kernel$ git log commit d5fc43de294c8fe856e7230924c6a2371749b821 Author: kinneko <kinneko@gmail.com> Date: Wed Jul 18 10:25:39 2012 +0900 import from BSPGB_kernel_20120601.tar.bz2 avv BSP1.2-20120612のkernel BSPGB_kernel_20120601.tar.bz2を展開
マスタポジトリとの連結と同期
~/AVV9000/kernel$ git remote add origin /home/kinneko/GIT/AVV9000/kernel/ ~/AVV9000/kernel$ git push origin master Counting objects: 35356, done. Delta compression using up to 12 threads. Compressing objects: 100% (34858/34858), done. Writing objects: 100% (35356/35356), 97.57 MiB | 7.84 MiB/s, done. Total 35356 (delta 3203), reused 0 (delta 0) To /home/kinneko/GIT/AVV9000/kernel/ * [new branch] master -> master
作業用ローカルブランチの作成
~/AVV9000/kernel$ git branch exp ~/AVV9000/kernel$ git branch -a exp * master remotes/origin/master
ブランチはできたが、現在地はmasterのまま。
expに移動する。
~/AVV9000/kernel$ git checkout exp Switched to branch 'exp' kinneko@BuildSV:~/AVV9000/kernel$ git branch -a * exp master remotes/origin/master
expブランチに変更を加える
作ってあったパッチをあてる。
~/AVV9000/kernel$ patch -p2 < ~/AVV9000/patches/008-kernel_fb_mode_1080i.patch patching file arch/arm/mach-avv/include/mach/fbcommon.h
確認。
~/AVV9000/kernel$ git diff diff --git a/arch/arm/mach-avv/include/mach/fbcommon.h b/arch/arm/mach-avv/inc index 63fb1b2..00f22e7 100755 --- a/arch/arm/mach-avv/include/mach/fbcommon.h +++ b/arch/arm/mach-avv/include/mach/fbcommon.h @@ -255,7 +255,7 @@ enum { #define AVV_FB_OUTPUT_DEF_HDMI_1080I 2 #define AVV_FB_OUTPUT_DEF_HDMI_1080P30 3 #define AVV_FB_OUTPUT_DEF_HDMI_1080P 4 -#define AVV_FB_OUTPUT_DEF_DEFAULT AVV_FB_OUTPUT_DEF_HDMI_1080P30 -#define AVV_FB_OUTPUT_MODE_DEFAULT AVV_FB_OUTPUT_MODE_HDMI_1080P30 +#define AVV_FB_OUTPUT_DEF_DEFAULT AVV_FB_OUTPUT_DEF_HDMI_1080I +#define AVV_FB_OUTPUT_MODE_DEFAULT AVV_FB_OUTPUT_MODE_HDMI_1080I #endif /* _FBCOMMON_H_ */
ビルドテスト。
実機テスト。
問題なし。
コミットする。
~/AVV9000/kernel$ git commit -a -m "set mode of fb to 1080i" [exp 06d44ee] set mode of fb to 1080i 1 files changed, 2 insertions(+), 2 deletions(-)
コミットしたので、diffはなくなった。
~/AVV9000/kernel$ git diff
ログを確認。
~/AVV9000/kernel$ git log commit 06d44eea470561d574ead1fbfa11c505ca1c05f7 Author: kinneko <kinneko@gmail.com> Date: Wed Jul 18 10:46:36 2012 +0900 set mode of fb to 1080i commit d5fc43de294c8fe856e7230924c6a2371749b821 Author: kinneko <kinneko@gmail.com> Date: Wed Jul 18 10:25:39 2012 +0900 import from BSPGB_kernel_20120601.tar.bz2 avv BSP1.2-20120612のkernel BSPGB_kernel_20120601.tar.bz2を展開
expに行った変更をmasterにマージする
masterに移動して、expをマージ。
~/AVV9000/kernel$ git checkout master Switched to branch 'master' kinneko@BuildSV:~/AVV9000/kernel$ git branch exp * master
パッチの内容はまだ反映されていない。
~/AVV9000/kernel$ git log commit d5fc43de294c8fe856e7230924c6a2371749b821 Author: kinneko <kinneko@gmail.com> Date: Wed Jul 18 10:25:39 2012 +0900 import from BSPGB_kernel_20120601.tar.bz2 avv BSP1.2-20120612のkernel BSPGB_kernel_20120601.tar.bz2を展開
マージする。
~/AVV9000/kernel$ git merge exp Updating d5fc43d..06d44ee Fast-forward Auto packing the repository for optimum performance. You may also run "git gc" manually. See "git help gc" for more information. Counting objects: 35366, done. Delta compression using up to 12 threads. Compressing objects: 100% (34867/34867), done. Writing objects: 100% (35366/35366), done. Total 35366 (delta 3210), reused 0 (delta 0) arch/arm/mach-rhsp/include/mach/fbcommon.h | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)
ログにも出てきた。
~/AVV9000/kernel$ git log commit 06d44eea470561d574ead1fbfa11c505ca1c05f7 Author: kinneko <kinneko@gmail.com> Date: Wed Jul 18 10:46:36 2012 +0900 set mode of fb to 1080i commit d5fc43de294c8fe856e7230924c6a2371749b821 Author: kinneko <kinneko@gmail.com> Date: Wed Jul 18 10:25:39 2012 +0900 import from BSPGB_kernel_20120601.tar.bz2 avv BSP1.2-20120612のkernel BSPGB_kernel_20120601.tar.bz2を展開
普通はすぐにはやらないけど、作業ブランチを削除しておく。
~/AVV9000/kernel$ git branch exp * master /AVV9000/kernel$ git branch -d exp Deleted branch exp (was 06d44ee). ~/AVV9000/kernel$ git branch * master
ローカルリポジトリの変更をマスタリポジトリに反映する
~/AVV9000/kernel$ git push origin master Counting objects: 15, done. Delta compression using up to 12 threads. Compressing objects: 100% (6/6), done. Writing objects: 100% (8/8), 6.56 KiB, done. Total 8 (delta 1), reused 8 (delta 1) Unpacking objects: 100% (8/8), done. To /home/kinneko/GIT/AVV9000/kernel/ d5fc43d..06d44ee master -> master
ローカルリポジトリを削除して、新しく作ったディレクトリにマスタからクローン
~/AVV9000/kernel$ cd .. ~/AVV9000$ rm -rf kernel ~/AVV9000$ git clone /home/kinneko/GIT/AVV9000/kernel/ Cloning into kernel... done. ~/AVV9000$ ls kernel ~/AVV9000$ cd kernel/ ~/AVV9000/kernel$ ls COPYING MAINTAINERS arch firmware ipc net sound CREDITS Makefile block fs kernel samples tools Documentation README crypto include lib scripts usr Kbuild REPORTING-BUGS drivers init mm security virt
再現できているか確認。
~/AVV9000/kernel$ git branch * master ~/AVV9000/kernel$ git log commit 06d44eea470561d574ead1fbfa11c505ca1c05f7 Author: kinneko <kinneko@gmail.com> Date: Wed Jul 18 10:46:36 2012 +0900 set mode of fb to 1080i commit d5fc43de294c8fe856e7230924c6a2371749b821 Author: kinneko <kinneko@gmail.com> Date: Wed Jul 18 10:25:39 2012 +0900 import from BSPGB_kernel_20120601.tar.bz2 avv BSP1.2-20120612のkernel BSPGB_kernel_20120601.tar.bz2を展開
問題なし。
というわけで、基本の再履修終わり。
エディタのとこ以外は躓かなかったか。