SVNとGitでCIする構成について

bleis伯爵SVNとGitでCIする構成についてツイートしていたので勝手にまとめました。
6
ぐるぐる系SQL @bleis

今うちで採用してるcentralリポジトリと各開発者用のprivateリポジトリの考え方を、中央リポジトリがSVNの環境に移すことを考えてみる。

2011-01-21 17:30:55
ぐるぐる系SQL @bleis

SVNとやり取りする部分は一か所にしたい。なのでgit svnを発行する用のリポジトリはサーバ側にベアリポジトリとして作っておく

2011-01-21 17:31:57
ぐるぐる系SQL @bleis

でもそれを公開してしまうと、その仕組みを使っていない人がSVNリポジトリを更新した際に色々とまずいことになる。なのでそのリポジトリは公開しない。

2011-01-21 17:32:49
ぐるぐる系SQL @bleis

代わりに、git svn dcommitが成功したらそこからさらにpushする用のリポジトリを用意して、そっちを公開する。dcommitに失敗した場合はgit svn fetchしてmasterをsvnの最新の場所にreset --softして、公開してるリポジトリにpushする

2011-01-21 17:35:06
ぐるぐる系SQL @bleis

で、もちろん公開してるリポジトリにはサーバ外からはpushできないようにしておく

2011-01-21 17:35:31
ぐるぐる系SQL @bleis

・・・こんな感じでできるんじゃないだろうか?つまり、privateリポジトリ、git-svn用リポジトリ、centralリポジトリの3段構成

2011-01-21 17:36:17
ぐるぐる系SQL @bleis

pushする先はprivateリポジトリ、pullの元になるのがcentralリポジトリ、みんなが使っているsvnとやり取りするのがgit-svnリポジトリ

2011-01-21 17:37:27
ぐるぐる系SQL @bleis

git-svnリポジトリは開発者は全く意識する必要がない感じで

2011-01-21 17:37:49
ぐるぐる系SQL @bleis

でもこの仕組みが構築できたら、SVNとGitを同時に運用しつつ、移行もスムーズにできそうな気がする

2011-01-21 17:39:53
ぐるぐる系SQL @bleis

問題があるとすれば、SVN側との同期がpush時、それもテストグリーン時にしか行われないところ?

2011-01-21 17:43:34
ぐるぐる系SQL @bleis

まぁ定期的にgit svn fetchなりgit svn rebaseなり走らせることはできるか

2011-01-21 17:44:03
ぐるぐる系SQL @bleis

SVN側から壊れたコミットを受け取る可能性があるのか。それを考慮しないとな

2011-01-21 17:44:53
ぐるぐる系SQL @bleis

SVNと同期を取った後、何かしら変更があった場合はgit-svnリポジトリに対してビルドが必要、っと。で、そこでredだった場合はcentralに反映しない。

2011-01-21 17:46:11
ぐるぐる系SQL @bleis

つまりCIには開発者毎のジョブと、git-svn用のジョブが必要なわけだ

2011-01-21 17:47:08
ぐるぐる系SQL @bleis

時間のある時にこの構成で実際に作ってみよう。問題なければ、SVN環境にCIとGitの環境を導入するハードルを下げることができるかも!

2011-01-21 17:50:01
ぐるぐる系SQL @bleis

時間のある時にこの構成で実際に作ってみよう。問題なければ、SVN環境にCIとGitの環境を導入するハードルを下げることができるかも!

2011-01-21 17:50:01