最近のキーワード

2006年08月05日

gitを使って見た

バージョン管理にgitを使うことを考えて、少しcvsとの連携について調べて見た。cvsexportcommitまでは試したが、cvsとの連携についてのワークフローは、少々厄介だと思った。今回は、一応、基本的なことだけを書き残して、cvsとの連携は後日書く。

まず、テスト用のファイルを用意する。
$ mkdir testdir
$ cd testdir
$ echo "hello" > hello.txt
$ ls -a
. .. hello.txt
$ cat hello.txt
hello
次に、このディレクトリをgitで管理するためにリポジトリを作成し、そこにカレントディレクトリの内容をすべて追加する。
$ git-init-db
$ git-add .
$ ls -a
.  ..  .git  hello.txt
.gitというファイルが作成されていることがわかる。これがgitのリポジトリになる。 ここで、直接hello.txtを編集して、commitする。
$ echo "bye" >> hello.txt
$ cat hello.txt
hello
bye
$ git-commit -a
Committing initial tree 42e387d3ccd3afe14d91453acca58e31be679a6c

次に、CVSのように使うことを考える。testdirのクローンtestdir1を作成し、そのtestdir1/hello.txtを編集して、その変更をtestdirへ反映させる。まずは、クローンを作成する。

$ cd ..
$ ls -a
.  ..  testdir
$ git-clone testdir testdir1
Generating pack...
Done counting 3 objects.
Deltifying 3 objects.
 100% (3/3) done
Total 3, written 3 (delta 0), reused 0 (delta 0)
$ ls -a
.  ..  testdir  testdir1
次に、testdir1/hello.txtを編集して差分を見る。
$ cd testdir1
$ echo "bye" > hello.txt
$ cat hello.txt
bye
$ git-diff
diff --git a/hello.txt b/hello.txt
index 410ca14..b023018 100644
--- a/hello.txt
+++ b/hello.txt
@@ -1,2 +1 @@
-hello
 bye
この変更をcommitしてログを見る。
$ git-commit -a
$ git-log
".git/COMMIT_EDITMSG" 10 lines, 210 characters written
commit dd0ef1b14c2ff8743ff505c0fe677ff8d014a660
Author: U-TATE-T43\ttate 
Date:   Sat Aug 5 05:24:57 2006 +0900

    removed the first line.

commit a537a5d75869aedd237edae2fdf3556e1026d485
Author: U-TATE-T43\ttate 
Date:   Sat Aug 5 05:18:05 2006 +0900

    initial commit. 
このままでは、testdir1での変更がcommitされただけで、この変更はtestdirにはまだ反映されていない。試しに、testdir2というクローンをtestdirから作って見る。
$ cd ..
$ git-clone testdir testdir2
$ cat testdir2/hello.txt
hello
bye
反映させるためには、git-pushを使う。
$ cd testdir1
$ git-push
updating 'refs/heads/master'
  from a537a5d75869aedd237edae2fdf3556e1026d485
  to   dd0ef1b14c2ff8743ff505c0fe677ff8d014a660
Generating pack...
Done counting 5 objects.
Result has 3 objects.
Deltifying 3 objects.
 100% (3/3) done
Total 3, written 3 (delta 0), reused 0 (delta 0)
Unpacking 3 objects
 100% (3/3) done
refs/heads/master: a537a5d75869aedd237edae2fdf3556e1026d485 -> dd0ef1b14c2ff8743ff505c0fe677ff8d014a660
$ cd ..
$ git-clone testdir testdir3
$ cat testdir3/hello.txt
bye
以上のようにして、cvsのように使うことができるし、また、git-cvsserverというcvsをエミュレートするサーバもgitに含まれている。
ラベル:git cvs
posted by ttate at 05:37| ☁| Comment(0) | TrackBack(1) | ソフトウェア開発 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック

[dev][git]実際に使ってみて感じたGitの良い点 - サイト更新停滞ちうっ
Excerpt: 実際に使ってみて感じたGitの良い点 - サイト更新停滞ちうっ Gitは他のバージョン管理システムと違い、バージョンを管理するファイルは 管理ファイルのルートとなるディレクトリにしか置いてない。だか..
Weblog: ドグマを探しに
Tracked: 2008-10-29 17:46
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。