<< はやりのgitをインストールした。そして使おうとしてみた。 | main | 終・はやりのgitをインストールした。そして今はこう使っている。 >>

続・はやりのgitをインストールした。そして使ってみた。

このエントリーを含むはてなブックマーク hateb
このエントリーは「はやりのgitをインストールした。そして使おうとしてみた。」の続きだよ。
前回の問題点が解決されて、CodeReposでgitを使う手順がまとまった(インストールまでは前回のエントリを参照のこと)。

こないだのエントリーを見たtypesterさんからtwitterでこんな指摘を頂いた。
「@jun_ichiro: git svn init の -s オプションが何を表してるか調べたほうがいいと思いますよ。。」
そりゃそうだ。早速マニュアルを見てみることに。
$ man git-svn

そしたら、-s はstdlayoutの略でスタンダードレイアウトとはtrunk,tags,branchesがセットされていることと書かれていたんだ。そう、だからPlaggerのレポジトリに対して行ったときはあの手順でうまくいって、CodeReposに対して行ったときはうまくいかなかったんだ。

で、じゃあどうやってCodeReposに対して行うかだ。

特にオプションを指定しないでinitを実行する。
$ cd ~/Work
$ mkdir coderepos
$ cd coderepos
$ git svn init http://svn.coderepos.org/share/ share
$ cd share
$ git svn fetch
codereposはリビジョンが7000とか超えてたからこりゃ時間がかかりそうだ。
とりあえず寝る。

翌朝。
fetchは終わってた。次に教わった手順通りにいろいろやってみる。
まずはsvnが変更されているかもしれないので、rebaseの実行だ。
$ git svn rebase

うまくいった。ちょこっと変更があったみたいだ。

それからいろいろ編集してみる。そして、
$ git commit -a

ここで -a のスイッチについて簡単にまとめておく。
svnでは新規に追加したファイルにはsvn add などが必要だったが、編集したファイルは特に気にせずsvn ci を実行すればよかった。ところが、gitでは追加したファイルも編集したファイルもgit add が必要になる。
また、不要になったファイルは単純にrm で削除するのではなくgit rmで削除しなければならない。(これはsvnでもほとんど同じだが)
つまり、もとからバージョン管理されているhello.c というファイルを編集して、さらに、バージョン管理されているgoodbye.c というファイルを削除したければ、下記のように実行しなければならない。
$ #(hello.c編集後)
$ git add hello.c
$ git rm goodbye.c
$ git commit
このcommit に先ほどの -a のスイッチをつけると下記のような流れで済む。
$ #(hello.c編集後)
$ rm goodbye.c
$ git commit -a
svnでの作業に慣れていれば、こちらの方が自然だと思う。(編集ごときでaddなんてしてらんないもんね。)

話を戻す。
commit -a のあとにコメントの入力を促されるのでコメントを入力する。
この時点ではまだローカルのgitレポジトリにコミットされるだけだ。
最後にこれをsvn側へコミット。
$ git svn dcommit

git のコマンド群は「git svn (...)」となっているものはリモートのsvnレポジトリに関連する操作で、単に「git (...)」となっているものはローカルのgitレポジトリに関連する操作のようだ。

これで一通りうまくいった...

けれども、問題も残っている。
いままでの一連の作業はすべてcodereposのshare全体に対して行われている。つまり、例えば「git status」を実行すれば自分の興味のないプロジェクトのディレクトリなどもすべて精査する。だからとにかく時間がかかるのだ。当然「commit -a(または git add)」を行うときだって、すべてのディレクトリを精査する。

実はここであげた一連の作業は、やりたいことはできるのだが、めちゃんこ遅い。
もう少し調べないと...とてもじゃないが使えない。
あと一歩なんだけど。

| Web技術 | 11:56 | comments(2) | trackbacks(2)
この記事のトラックバックURL
http://en.yummy.stripper.jp/trackback/826419
トラックバック
はやりのgitをインストールした。そして使おうとしてみた。
まずはインストールだ。MacPortsにあるのならそれを利用したい。ということで、とりあえず探してみることに。 $ port search git cogito devel/cogito 0.18.2 Git core and cogito tools to provide a fully-distributed SCM git-core devel/git-core 1.5.3.7 T
| ブログが続かないわけ | 2008/02/21 12:13 PM |
終・はやりのgitをインストールした。そして今はこう使っている。
前回のエントリ(続・はやりのgitをインストールした。そして使ってみた。)で一通りgitが使えるようになったのだが、結局少し問題が残っていると書いたところ、コメントで対応策を教えて頂いた。 kana++ フィードバックが遅くなっちゃったけど、先ほど自分の.emacs
| ブログが続かないわけ | 2008/03/04 1:04 PM |
コメント
追いかけたい部分がごく一部なら
$ git svn init http://svn.coderepos.org/share/dotfiles/vim foo
とすることができますよ。

あと、過去の履歴を参照できなくてもいいなら
$ git svn fetch -r HEAD
として最新版だけ取得することができますよ。
| kana | 2008/02/23 9:45 PM |
素敵なアドバイス!
なんだかマニュアルを読めば載っていそうなことなのに、申し訳ございません。

試してみます。
ありがとうございました。
| junichiro | 2008/02/24 8:53 AM |
コメントする