トップ «前の日記(2007-02-01) 最新 次の日記(2007-02-03)» 編集

muneda's diary


2007-02-02 曇り,さらに寒い [長年日記]

_1 もっと寒い

昨日より一段と冷え込んだ.行きはまだマシだったが帰りはもっと寒い.あまりの寒さにバスの中でニット帽かぶるくらい.坊主にするタイミング間違えたかな.凹.

Tags: Life

_2 A tutorial introduction to git

Gitを使ってパッチの管理をできるようになれば,より開発版のカーネルソース が参照,編集しやすくなるはず.まずは,このチュートリアルから始めてみる.

git以外にもさまざまなインターフェースが用意されている.以下の3つを使って 一通りチュートリアルを行い,一番使いやすいものを使っていくことにする.

Tags: Linux

_3 gitチュートリアル git 版

git config

$ git config --global user.name "Your Name Comes Here"
$ git config --global user.email you@yourdomain.example.com

は1.4.4.4では使えない.HEADだけ?

■[Linux] git チュートリアル 03:26 - エンジニアきまぐれTips を参考に手で~/.gitconfigを作成

% cat ~/.gitconfig
[user]
      name = MUNEDA Takahiro
      email = muneda.takahiro@example.com

git init

$ git init

は1.4.4.4では使えない.これまたHEADだけ?代わりに以下のコマンドを使う.

% git init-db
defaulting to local storage area

カレントディレクトリ配下に .git ディレクトリが作成される.その下は以下の ようになっている.

% ls -lR .git
.git:
合計 12
-rw-r--r-- 1 muneda users  23 2007-02-01 11:52 HEAD
-rw-r--r-- 1 muneda users  53 2007-02-01 11:52 config
-rw-r--r-- 1 muneda users  58 2007-02-01 11:52 description
drwxr-xr-x 2 muneda users 296 2007-02-01 11:52 hooks/
drwxr-xr-x 2 muneda users  72 2007-02-01 11:52 info/
drwxr-xr-x 4 muneda users  96 2007-02-01 11:52 objects/
drwxr-xr-x 4 muneda users  96 2007-02-01 11:52 refs/

.git/hooks:
合計 36
-rw-r--r-- 1 muneda users  441 2007-02-01 11:52 applypatch-msg
-rw-r--r-- 1 muneda users  588 2007-02-01 11:52 commit-msg
-rw-r--r-- 1 muneda users  152 2007-02-01 11:52 post-commit
-rw-r--r-- 1 muneda users  207 2007-02-01 11:52 post-update
-rw-r--r-- 1 muneda users  388 2007-02-01 11:52 pre-applypatch
-rw-r--r-- 1 muneda users 1696 2007-02-01 11:52 pre-commit
-rw-r--r-- 1 muneda users 4262 2007-02-01 11:52 pre-rebase
-rw-r--r-- 1 muneda users 2555 2007-02-01 11:52 update

.git/info:
合計 4
-rw-r--r-- 1 muneda users 240 2007-02-01 11:52 exclude

.git/objects:
合計 0
drwxr-xr-x 2 muneda users 48 2007-02-01 11:52 info/
drwxr-xr-x 2 muneda users 48 2007-02-01 11:52 pack/

.git/objects/info:
合計 0

.git/objects/pack:
合計 0

.git/refs:
合計 0
drwxr-xr-x 2 muneda users 48 2007-02-01 11:52 heads/
drwxr-xr-x 2 muneda users 48 2007-02-01 11:52 tags/

.git/refs/heads:
合計 0

.git/refs/tags:
合計 0

git add

$ git add .

指定したディレクトリ配下のファイルをgitのdbに登録する様子. 差分は git init-db 実行後との差分は以下のとおり.

.git/objects:
+drwxr-xr-x 2 muneda users 160 2007-02-01 13:39 02/
+drwxr-xr-x 2 muneda users 104 2007-02-01 13:39 0c/
+drwxr-xr-x 2 muneda users 104 2007-02-01 13:39 10/
+drwxr-xr-x 2 muneda users 104 2007-02-01 13:39 13/
+drwxr-xr-x 2 muneda users 104 2007-02-01 13:39 1d/
+drwxr-xr-x 2 muneda users 104 2007-02-01 13:39 1f/
+drwxr-xr-x 2 muneda users 104 2007-02-01 13:39 31/
+drwxr-xr-x 2 muneda users 104 2007-02-01 13:39 37/
+drwxr-xr-x 2 muneda users 104 2007-02-01 13:39 38/
+drwxr-xr-x 2 muneda users 104 2007-02-01 13:39 4d/
+drwxr-xr-x 2 muneda users 104 2007-02-01 13:39 5b/
+drwxr-xr-x 2 muneda users 104 2007-02-01 13:39 63/
+drwxr-xr-x 2 muneda users 104 2007-02-01 13:39 64/
+drwxr-xr-x 2 muneda users 104 2007-02-01 13:39 70/
+drwxr-xr-x 2 muneda users 104 2007-02-01 13:39 75/
+drwxr-xr-x 2 muneda users 104 2007-02-01 13:39 8a/
+drwxr-xr-x 2 muneda users 104 2007-02-01 13:39 96/
+drwxr-xr-x 2 muneda users 104 2007-02-01 13:39 99/
+drwxr-xr-x 2 muneda users 104 2007-02-01 13:39 9a/
+drwxr-xr-x 2 muneda users 104 2007-02-01 13:39 b5/
+drwxr-xr-x 2 muneda users 104 2007-02-01 13:39 b6/
+drwxr-xr-x 2 muneda users 104 2007-02-01 13:39 ce/
+drwxr-xr-x 2 muneda users 104 2007-02-01 13:39 d4/
+drwxr-xr-x 2 muneda users 104 2007-02-01 13:39 e3/
+drwxr-xr-x 2 muneda users 104 2007-02-01 13:39 e6/
+drwxr-xr-x 2 muneda users 104 2007-02-01 13:39 f8/

git commit

$ git commit
.git/COMMIT_EDITMSG
# Please enter the commit message for your changes.
# (Comment lines starting with '#' will not be included)
#
# Initial commit
#
# Updated but not checked in:
#   (will commit)
#
#       new file: hoge.txt
#       new file: .....
#       new file: fuga.txt
#

何も入力せずにエディタを終了させたところ

% git commit
* no commit message?  aborting commit.

と言われた. ./git 配下にも変化なし.

git test

を追記したところ

% git commit
Committing initial tree 0f0acc1bcbf9ed9f031a0300fe04eb113331397e

となり,commitが成功した模様.

git diff

$ git diff
diff --git a/hoge.txt b/hoge.txt
index 635003c..6158856 100755
--- a/hoge.txt
+++ b/hoge.txt
@@ -1,5 +1,5 @@
#!/bin/bash
-
+#
#
#
#

git add, commit

% git add hoge.txt
% git commit
# Changed but not updated:
#   (use git-update-index to mark for commit)
#
#      modified:   hoge.txt
#
nothing to commit

チュートリアルは新規追加ファイルを例にしているのか.同じようにはいかない. とりあえずhoge.txtの差分を元に戻す.

% nano hoge.txt
% git update-index
% git add hoge.txt
% git commit

指定どおり git update-index(git-update-index)を実行してみたが,変わらず.

% git commit
# Changed but not updated:
#   (use git-update-index to mark for commit)
#
#      modified:   hoge.txt
#
nothing to commit

でもgit diffでは見えるんだが….よくわからんのでいったん全部やりなおし.

% git init-db
% git add .
% git commit

新しいファイルを作成してみる.

% nano git-test.txt
% cat git-test.txt
This file is to test making changes with git.
% git diff

この時点では何も表示されなかった.(差分なし)

% git add git-test.txt

ちなみに,この時点git diffしても何も表示されなかった.(差分なし)

% git commit

# Please enter the commit message for your changes.
# (Comment lines starting with '#' will not be included)
# Updated but not checked in:
#   (will commit)
#
#       new file:   git-test.txt
#

と表示され,追加したファイルが無事認識されている.

% git log
commit 405dba7bf58aecf55e3ec0ec3865f5a7c269bb95
Author: MUNEDA Takahiro <muneda.takahiro@example.com>
Date:   Thu Feb 1 15:02:25 2007 +0900

   add git-test.txt
commit b3aac2edd441ec7dd0eea435499064b674bd1d54
Author: MUNEDA Takahiro <muneda.takahiro@example.com>
Date:   Thu Feb 1 15:01:18 2007 +0900

   initial commit

ちゃんとcommitされている.

既存のファイルを変更する場合について再チャレンジ.

% nano hoge.txt
% git diff ← (1)
% git update-index hoge.txt ★
% git diff ← (2)
% git commit
% git log

既存のファイルを編集する場合,★の行が必要で,git add は不要.また(1)の 時点ではgit diffに差分が表示されるが,(2)の時点ではgit diffに差分が表示 されない.

大量のファイルを編集した場合★での作業が多いので面倒.update-indexし忘れ ることが多々発生しそうだ.

git commit -a

% nano hoge.txt
% git commit -a

とするとcommit messagesの編集画面となった.つまり上で書いたgit add, commitで一番大変そうだった'git update-index'をする必要がなくなる.よって こちらのほうが便利.

% nano hoge.txt
% git update-index hoge.txt
% git commit
Tags: Linux

_4 gitチュートリアル メモ cogito 版

git config

$ git config --global user.name "Your Name Comes Here"
$ git config --global user.email you@yourdomain.example.com

はgitと同じくcogito-0.18.2では使えない.

■[Linux] git チュートリアル 03:26 - エンジニアきまぐれTips を参考に手で~/.gitconfigを作成

% cat ~/.gitconfig
[user]
      name = MUNEDA Takahiro
      email = muneda.takahiro@example.com

git init

% cg-init
defaulting to local storage area
Adding file ファイル名
.....
Adding file ファイル名

が表示されたあと自動的にファイルの編集画面となる. ($EDITORで指定されたエディタで開かれるのかな)

Initial commit
CG: -----------------------------------------------------------------------
CG: Lines beginning with the CG: prefix are removed automatically.
CG:
CG: Author: MUNEDA Takahiro
CG: Email: muneda.takahiro@example.com
CG:
CG: If you want to abort the commit, just quit without saving this file.
CG: -----------------------------------------------------------------------
CG: vim: textwidth=75

何も記述せずに保存し,エディタを終了させると

Log message unchanged or not specified
Abort or commit? [ac]

と出たのでとりあえずabort.

Abort or commit? [ac] a
Commit message not modified, commit aborted
cg-init: Initial commit aborted

特にファイルが作られたなどの形跡はない.

同じく何も記述せずに commit とすると

Abort or commit? [ac] c
Committing initial tree 9cedec295786f4f07492e22f4044d088b3b60fa5
Committed as 51046be46625444052bf594f9333719953e39e17
cg-init: Note that some files were not added due to the default ignore rules.
cg-init: You can list them by invoking 'cg-status -x'.

と表示されカレントディレクトリ配下に .git ディレクトリが作成される.その 下は以下のようになっている.

% ls -lR .git
.git:
合計 16
-rw-r--r--  1 muneda users   23 2007-02-01 12:04 HEAD
-rw-r--r--  1 muneda users   53 2007-02-01 12:04 config
-rw-r--r--  1 muneda users   58 2007-02-01 12:04 description
drwxr-xr-x  2 muneda users  296 2007-02-01 12:04 hooks/
-rw-r--r--  1 muneda users 1346 2007-02-01 12:05 index
drwxr-xr-x  2 muneda users   72 2007-02-01 12:04 info/
drwxr-xr-x 19 muneda users  456 2007-02-01 12:05 objects/
drwxr-xr-x  4 muneda users   96 2007-02-01 12:04 refs/

.git/hooks:
合計 36
-rw-r--r-- 1 muneda users  441 2007-02-01 12:04 applypatch-msg
-rw-r--r-- 1 muneda users  588 2007-02-01 12:04 commit-msg
-rw-r--r-- 1 muneda users  152 2007-02-01 12:04 post-commit
-rw-r--r-- 1 muneda users  207 2007-02-01 12:04 post-update
-rw-r--r-- 1 muneda users  388 2007-02-01 12:04 pre-applypatch
-rw-r--r-- 1 muneda users 1696 2007-02-01 12:04 pre-commit
-rw-r--r-- 1 muneda users 4262 2007-02-01 12:04 pre-rebase
-rw-r--r-- 1 muneda users 2555 2007-02-01 12:04 update

.git/info:
合計 4
-rw-r--r-- 1 muneda users 240 2007-02-01 12:04 exclude

.git/objects:
合計 0
drwxr-xr-x 2 muneda users 160 2007-02-01 12:04 02/
drwxr-xr-x 2 muneda users 104 2007-02-01 12:04 1d/
drwxr-xr-x 2 muneda users 104 2007-02-01 12:04 1f/
drwxr-xr-x 2 muneda users 104 2007-02-01 12:04 4d/
drwxr-xr-x 2 muneda users 104 2007-02-01 12:05 51/
drwxr-xr-x 2 muneda users 104 2007-02-01 12:04 63/
drwxr-xr-x 2 muneda users 104 2007-02-01 12:04 64/
drwxr-xr-x 2 muneda users 104 2007-02-01 12:04 70/
drwxr-xr-x 2 muneda users 104 2007-02-01 12:04 8a/
drwxr-xr-x 2 muneda users 104 2007-02-01 12:04 96/
drwxr-xr-x 2 muneda users 104 2007-02-01 12:05 9c/
drwxr-xr-x 2 muneda users 104 2007-02-01 12:04 b5/
drwxr-xr-x 2 muneda users 104 2007-02-01 12:04 d4/
drwxr-xr-x 2 muneda users 104 2007-02-01 12:05 f7/
drwxr-xr-x 2 muneda users 104 2007-02-01 12:04 f8/
drwxr-xr-x 2 muneda users  48 2007-02-01 12:04 info/
drwxr-xr-x 2 muneda users  48 2007-02-01 12:04 pack/

.git/objects/02:
合計 8
-r--r--r-- 1 muneda users 832 2007-02-01 12:04 9fc2a489d1898b720048d577a1de59f8664920
-r--r--r-- 1 muneda users 805 2007-02-01 12:04 a757bbf4488740a72966bb1f7f2694581bd04d

.git/objects/1d:
合計 4
-r--r--r-- 1 muneda users 129 2007-02-01 12:04 2a05ad38a86f42aa28a4f8043a588dea7041d5

.git/objects/1f:
合計 4
-r--r--r-- 1 muneda users 1595 2007-02-01 12:04 ca8da4b740e166b93e28aaadd276577a415ea7

.git/objects/4d:
合計 4
-r--r--r-- 1 muneda users 290 2007-02-01 12:04 7c7b58c890c215f2f133e732508173b3ef72bf

.git/objects/51:
合計 4
-r--r--r-- 1 muneda users 145 2007-02-01 12:05 046be46625444052bf594f9333719953e39e17

.git/objects/63:
合計 4
-r--r--r-- 1 muneda users 1511 2007-02-01 12:04 5003c6d2e8a6e9c11c47d5ade6bcfac6c4c2fd

.git/objects/64:
合計 4
-r--r--r-- 1 muneda users 242 2007-02-01 12:04 b714f3cf0545bcc9d28bbe7ccf9f114dec2e03

.git/objects/70:
合計 4
-r--r--r-- 1 muneda users 152 2007-02-01 12:04 11893bd7147d765162195ecd9642416928df9e

.git/objects/8a:
合計 4
-r--r--r-- 1 muneda users 1258 2007-02-01 12:04 0f7e10c4f9243ca7ac067e5c15c930fd2eb5f0

.git/objects/96:
合計 4
-r--r--r-- 1 muneda users 936 2007-02-01 12:04 5c1fa07ac7428ded327ff090a58d9b61c51f14

.git/objects/9c:
合計 4
-r--r--r-- 1 muneda users 274 2007-02-01 12:05 edec295786f4f07492e22f4044d088b3b60fa5

.git/objects/b5:
合計 4
-r--r--r-- 1 muneda users 798 2007-02-01 12:04 9f71d617ab5a1bc759db82f256384bd2e52112

.git/objects/d4:
合計 4
-r--r--r-- 1 muneda users 256 2007-02-01 12:04 1f3fd3d0fa26f442b0840a3d3fe28974801c8e

.git/objects/f7:
合計 4
-r--r--r-- 1 muneda users 329 2007-02-01 12:05 ebfd8813ab477664a7d6923d3593c9690eba92

.git/objects/f8:
合計 4
-r--r--r-- 1 muneda users 220 2007-02-01 12:04 e2c3c3b8b5d787f70682243d787e8a5011d498

.git/objects/info:
合計 0

.git/objects/pack:
合計 0

.git/refs:
合計 0
drwxr-xr-x 2 muneda users 72 2007-02-01 12:05 heads/
drwxr-xr-x 2 muneda users 48 2007-02-01 12:04 tags/

.git/refs/heads:
合計 4
-rw-r--r-- 1 muneda users 41 2007-02-01 12:05 master

.git/refs/tags:
合計 0

git init-db をしたときよりも全然多い.(git init-db + add + commit と同じ)

% cg-status
Heads:
   >master    51046be46625444052bf594f9333719953e39e17

とすると先ほどのcommit

Committed as 51046be46625444052bf594f9333719953e39e17

が master と呼ばれるものになっていることがわかる.

git と cogito との差分

% git init-db
% git add
% git commit

% cg-init

だけで行える.cogitoが大変便利.


追記

% echo $EDITOR
nano
% EDITOR='emacs -nw'
% echo $EDITOR
emacs -nw

としてcommitをしたところemacsでCOMMIT_EDITMSGを編集する画面となった.や はりEDITOR環境変数を見ている.

git diff

$ cg-diff

diff --git a/hoge.txt b/hoge.txt
index 635003c..6158856 100755
--- a/hoge.txt
+++ b/hoge.txt
@@ -1,5 +1,5 @@
#!/bin/bash
-
+#
#
#
#

gitとまったく同じ.

git add,commit

% nano hoge.txt
% cg-add hoge.txt
Adding file hoge.txt
% cg-commit
Committed as 01828c69448447ea28dac991faad355fc304c6dd

無事変更分が反映された.

% cg-log
Commit: 01828c69448447ea28dac991faad355fc304c6dd
Author: MUNEDA Takahiro <muneda.takahiro@example.com> Thu, 01 Feb 2007 14:45:
44 +0900

   add # in hoge.txt
Commit: 51046be46625444052bf594f9333719953e39e17
Author: MUNEDA Takahiro <muneda.takahiro@example.com> Thu, 01 Feb 2007 12:05:
03 +0900

   Initial commit

git commit -a

% nano hoge.txt
% cg-commit -a
cg-commit: unrecognized option -a

となり,commitサブコマンドには-aオプションが用意されておらず失敗する.

% nano hoge.txt
% cg-commit

で'git commit -a'と同等の処理をするため,わざわざ'commit -a'を指定しなく てもよいためだと思われる.

Tags: Linux

_5 git チュートリアル メモ git.el版

git config

git, cogitoと同様configは存在しない.ま,それらのelインターフェイスだか ら当然か.

git init,add, commit

initは存在しない.gitもしくはcogitoで行う必要がある.

git status

git.elはすべてgit-statusバッファが基本.すべてのコマンドはこのバッファ上 で行う.

M-x git-status

とするとミニバッファに

Select directory:

と表示されるので,git initしたディレクトリを指定する.

Directory:  ~/me/git-test/git-el/
Branch:     master
Head:       ec7431434b

   No changes.

のように,現在参照しているgitツリーが表示されている.なお,git initした ときに必要なさそうだとGitが判断したファイルの相対パス,ファイルの状態が

    Unknown      filename
    Unknown      ....
    Unknown      filename

のように表示される.手元で確認したところ,quilt関係のファイルがこれに該 当する模様.

   Unknown      .pc/.version
   Unknown      .pc/applied-patches
   Unknown      .pc/hoge.patch/.timestamp
   Unknown      patches/hoge.patch~

ファイル名の末尾に~がついているファイルが見えるがこれはEmacsが作成するバッ クアップファイルではない.詳細は未確認だが,git.elで作業をしていると Emacsのバックアップファイルが作成されない.

なお,git initをしていないとミニバッファに

cannot find top-level git tree for ~/me/git-test/.

と表示される.

git-status上で'?'を押すとバッファが分割され,他方にgit-statusで利用でき るコマンド一覧が表示されるので参考にするとよい.

git diff, commit

gitツリーに登録されているファイルを編集し,

M-x git-status

を実行する.すると

Directory:  ~/me/git-test/git-el/
Branch:     master
Head:       f842d43580

    Modified     hello.txt

となり,編集したファイルが認識できる.*git-status*バッファで

= (または d =)

を押すとバッファが分割され,git diff, cg-diffをした結果と同じものが

  • git-diff*バッファに表示される.

編集内容が正しければ,*git-status*バッファで

c

を押すとバッファが分割され,*git-commit*バッファが表示される.

Author: MUNEDA Takahiro <muneda.takahiro@example.com>
--- log message follows this line ---
□

カーソル位置は'□'位置にある.このときミニバッファには

Press C-c C-c when you are done editing.

と表示される.commit時のコメントを入力し終わったら

\C-C \C-c

を押す.するとミニバッファに

Committed 45f2422d8c9d2708d178141e2f3a99fd1bf2b770.

と表示され,*git-status*バッファが自動的に更新される.

Directory:  ~/me/git-test/git-el/
Branch:     master
Head:       45f2422d8c

    Uptodate     hello.txt

これでcommit完了.

Tags: Linux

過去の日記
2002|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|05|06|
トップ «前の日記(2007-02-01) 最新 次の日記(2007-02-03)» 編集