- ベストアンサー
社内プロジェクトのtrunkにビルドが通らない状態でコミットするべきか
- 社内プロジェクトのtrunkにビルドが通らない状態でコミットするべきかについて疑問があります。
- 先輩からは、trunkのビルドが通らないことは普通であるとの意見がありますが、私は違和感を感じています。
- オープンソースプロジェクトと社内プロジェクトのtrunkは異なる意味合いがあると考えており、社内プロジェクトではビルドが通った状態でコミットすべきだと思っています。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
間違ってないと思いますよ。 trunkは全員が共通して使う最新のコードであることを想定し、まず、build可能なもの、そしてtestが通るものを置いておくべきです。buildすらできないものは無条件にrevertされても文句言えないと思います。そして、testがないもの、testが通らないものは理由がない限りは入れてはいけないと思います。 ある程度大きなOSSの場合、普通の開発者においそれとコミット権をくれないですよね。そして、普通の開発者が本体にプログラムを入れたい場合、デザインレビューからソースコードレビューまでの関門を通り抜けて、コミッターによってテストされた上でコミットされると思うんですが。 よく壊れているというのは何のプロジェクトでしょうか? まずは上司も含めたミーティングでtrunkのポリシーについて話しあってはいかがでしょうか。 リファクタリングの最中でも最低限buildが通る形で進化させていくことは可能だと思います。もちろん、その場合は今後どういう形にするというドキュメントがあったほうが好ましいです。 また、新規モジュールを作る場合は一緒にテストも作っておくことをお勧めします。テストがないとそれが期待する動作をするのか否か判定できず、バグが見つかった時にどのモジュールのせいなのか即座にわからないですからね。それに、テストコードはそのモジュールの期待される使い方、期待されない使い方を示しているのでそこを他人が理解するのにも役立ちます。
その他の回答 (3)
- okbakasine
- ベストアンサー率27% (67/242)
会社としての開発時の規約は? 普通は、バージョン管理サーバにコミットするときは最低限、ビルドが通る物って決めているはずでけど その規約は存在する? まぁその手の規約には絶対にクラス名や関数の命名規約や変数名の命名規約はコーディングの規約(インデントをタグにするかスペースにするかなど)が絶対にあるはずですけど で、この手の開発時の規約を守らないと給与査定にも響くはずだし下手したら解雇。 >開発中にtrunkのビルドが通らなくなるのは普通。 誰がそのコードをいじっても良い状態のオープンソースならそれはアリだけど 仕事した場合そのコードを担当以外がいじるのは問題あるから 勝手に修正してビルドが通る状態にするだけでも大問題。だからこそビルドが通るソースをコミットするのが常識。 とりあえずブランチで対処する気すら無いならバージョン管理システムを切り替えるしか方法は無いのかな? gitあたりにでも(これなら開発中の部分は中央サーバにあげずに個人の環境だけでコミット作業できるわけですし) そういえば個人環境ではgitを使って中央サーバではsubversionを利用する方法ってあったね。 http://sourceforge.jp/magazine/09/03/26/0834222 こんな感じで
- wormhole
- ベストアンサー率28% (1626/5665)
私のかかわったプロジェクトだと 最低限コンパイルできる事を確認した上でコミットするように お願いしています(私が運用ポリシーなど決める側でなくても)。 でないと他の人の開発に影響出過ぎますから。 その先輩は、それがどれだけ他の人を困らせる行為なのか わかってないんじゃないんですかね。 プロジェクトメンバーの集まるミーティングでの 議題とかにした方がよいのではないでしょうか。 >「開発中にtrunkのビルドが通らなくなるのは普通。オープンソースプロジェクトでもtrunkのビルドが通らないのは当たり前」 正直、その行為を正当化する理由にはまったくなってないと思いますが・・・ オープンソースプロジェクトが全てそうというわけでもないでしょうし。 その本人だけの常識って気が・・・
- Wr5
- ベストアンサー率53% (2173/4061)
個人的には…不具合があるとしても最低限ビルドの通るモノを…と思いますね。 まして、他のメンバーに影響するのであれば。 まぁ、私の使っているリポジトリは私しか使用しないため、たまにビルド確認できないモノをコミットすることはありますが。 # それでも、コミットログに「ビルド未確認」とかコメント入れてますが。 # 後から「ビルド確認」したモノがコミットされることに…。 >新規モジュール作成や、リファクタリング時のsaveの意味で であれば、私なら最初からその為のブランチ切ります。 後でマージすれば済む話ですし。 # マージで衝突しない…とも限りませんけどね…。 社内でのプロジェクトなのですから、上長などに掛け合ってルール化するべき…かと思います。 その先輩は反対するでしょうが、事実他のメンバーに迷惑かけているのならば、なんらかの調整は必要でしょう。 その先輩が行ったコミットのせいで全体の進捗が遅れても責任とってくれる。というのなら、まぁ取って貰えばいいでしょうし。 # なんだかんだ言って逃げるでしょうけどねぇ。 過去のリビジョン取ってくればいいじゃないかとか…。 ちなみに、オープンソースのプロジェクトには参加したことの無い者の意見ですけどね。
お礼
具体的な名前を出すのは控えますが、比較的小規模なOSSです。 先輩にも確認してみましたが、「大きなプロジェクトはしっかりしているからtrunkのビルドが通らないケースは少ない」といってました。(痛いところを突かれたようで苦笑いしてました) 結局チームとして、trunkのビルドは通る状態でコミットする方針にしていこうと思います。 大規模OSSのコミットの流れを教えていただいたので、ベストアンサーとさせていただきます。