CodingFirst

C言語、Perl、JavaScript、最近はPythonも。出来上がったものより、プログラムを書くことが好き。あと、スイーツ。

スポンサーサイト

  • このエントリーをはてなブックマークに追加
  • web拍手 by FC2
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

リポジトリはsvn、クライアントはgitを使う

  • このエントリーをはてなブックマークに追加
  • web拍手 by FC2

サーバのリポジトリを svn として、git で開発を進められるかを試用してみた。なので、思いっきり git っぽく行うより、svn の使用感を残しつつ git を使う感じで進める。

git は Windows環境が整ってからと思ってて、まだ日本語ファイルに弱い気がするけど、msysgitとTortoiseGit の併用で使用に耐えるなと思ったので git を使おうかなと思い始めた。


まず、チェックアウト。svn っぽい考えとしては、HEADリビジョンのチェックアウトで十分だろう。

git svn init http://path/to/svn/trunk/prj
git svn fetch -rHEAD

ここで svn ではコーディグ開始となるが、今回 git なので、branch してからコーディングしようと思う。なぜなら、svnでは branch はコストが高くて極力避けていたが git では branch した方がコストが下がると期待してるから。

さて、コーディングする内容を issue-XXX とした場合、

git checkout -b issue-XXX

とすると branch を作成しつつチェックアウトする。この場合、masterと同一なので何もソースコードに変更はないけども。

~~~ ここでソースコードをバリバリ書く。~~~

書いたらコミットする。

ファイルを追加するときは git add しておく。

git commit -a

このコミットはローカルの gitリポジトリにコミットするだけなので、サーバのsvnへは影響しない。

というわけで、サーバの svn にコミットする。前準備として svnの最新版と同期をとるが、コミットは本線の master で行うので、戻っておく。

git checkout master
git svn fetch

svn側での変更差分を master, issue-XXX にマージする。

git rebase git-svn
git rebase git-svn issue-XXX
git rebase issue-XXX

うーん。rebase が多くでめんどくさい。。。

issue-XXX に branch したからなので、master でだけ作業すりゃ手間は増えないじゃんと思う。でも、複数のissueを平行して行う場合、ついついゴチャマゼにコーディングして、AAAはできたけどBBBが不十分でコミットできない...というのがすごいストレスだったので、この手間はかけるべきなんだろう。

確かに svnでもフォルダをわけて個別に checkout すればできたけど遅くてやる気にならなかった。これは svnだけの問題でなく http とかいろいろあるけども。

話を戻すと、複数のissueがあれば rebase を使って master にマージすべき。merge コマンドを使うときっと、Merged .. とかいう要らないログが増えてちょっと恥ずかしくなる。

(もし、そうなったら git commit --amend)

svn にコミットする。

git svn dcommit

これでおしまい。だけど、このコミットは svn commit よりやたら時間がかかる気がする。こればっかりは我慢するしかないのか。。。

ちなみに慣れるまで、1コマンド毎くらいに

gitk --all 

とかで、全体のリビジョンとbranchのツリーを一手ずつ確認しながら進めると、理解しやすいかと思う。


入門Git入門Git
(2009/09/19)
濱野 純(Junio C Hamano)

商品詳細を見る
スポンサーサイト


★☆★コメント★☆★

コメントの投稿

Name
Subject
Mail
URI
Comment
Pass
Secret 管理者にだけ表示を許可する

トラックバック

http://iyukki.blog56.fc2.com/tb.php/87-83b06561

 | HOME | 

Search

Recent Entries

Foot Print



Categories

Monthly

Recent Comments

Recent Trackbacks

Profile

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。