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を展開

問題なし。


というわけで、基本の再履修終わり。
エディタのとこ以外は躓かなかったか。