7

私の仕事では、現在Aegisバージョン管理/SCMを使用しています。構成方法、テストの数があり、変更を統合する前に、次のことを強制的に実行します。

  • テストのフルセットが実行されている必要があります。
  • すべてのテストに合格している必要があります。

テスト駆動開発(TDD)では、これらは賢明な要件のように思われます。しかし、他のバージョン管理システムでこれを行う方法については聞いたことがありません。(現在、切り替える予定はありませんが、将来、Aegisを使用せずに切り替える方法を知りたいです。)

これを実行できるVCS(分散型または非分散型)に興味があります。また、これを可能にする既存のVCSへのプラグイン/拡張機能にも興味があります。できればオープンソースソフトウェア。

ETA:わかりました。通常は、VCS +継続的インテグレーションソフトウェアを使用するようです。テストの実行は、個別の手順ではなく、ビルドの一部として自動化されています。私が正しく理解していれば、それでもテストに合格しないコードをコミットすることができますが、それについて通知を受けるだけです-そうですか?それを統合/コミットすることを妨げるものはありますか?

4

9 に答える 9

5

IMOテストを強制的にパスさせ、テスト結果に依存するチェックインではなくビルドを行う場合は、CruiseControlHudsonなどの継続的インテグレーション システムを使用する方がはるかに優れています。ツールのセットアップは簡単で、組み込みの結果通知 (電子メール、RSS、またはブラウザー プラグイン経由) と、Web ページを介したテスト結果レポートの利点が得られます。

質問の更新については、その通りです。VCS + CI を使用すると、テストに合格しないコードをコミットできます。ほとんどの CI セットアップでは、すべてのテストに合格しない限り、製品の最終ビルドを取得できません。すべてのテストに合格しない限り、誰かがコミットするのを本当に止めたい場合は、他の人が提案したように、VCS でフックを使用する必要があります。ただし、これは対処が難しいように見えます-開発者は、チェックインを行うたびに、作成しているチェックインに関連しないテストを含むすべてのテストを実行する必要があるか、または実行する必要があります。特定のチェックインに関連するテストのみを実行する非常に細かい VCS フックをいくつか作成します。私の経験では、開発者に関連するテストをローカルで実行してもらい、CI システムに時折の間違いを指摘してもらう方がはるかに効率的です。

于 2009-03-25T17:20:24.037 に答える
3

subversionとgitを使用すると、これを行うためにpre-commitフックを追加できます。

Continuous Intergration(またはのバリアント)を確認する必要があるようです。

Gitにはパッチの適用にもフックがあると思います。

于 2009-03-25T11:16:47.673 に答える
3

Subversiongitはどちらも、pre-commitフックを介してこれをサポートしています。

Visual Studio Team Systemは、チェックインポリシーを介してこれをネイティブにサポートします。

Rational ClearCaseもそれをサポートしていると思いますが、それが実証されたのを見たことがないので、はっきりとは言えません。

于 2009-03-25T11:38:10.927 に答える
2

まったく同じではありませんが、似たようなことを行うためにgitbuildbotを使用します。各開発者に独自の Git リポジトリを提供し、それらのリポジトリの 1 つにプッシュするたびにビルドするように buildbot を設定しています。次に、ビルドボットのステータスを確認し、変更を確認し、変更をマージしたり、必要に応じて何かを修正するように指示したりできるインテグレーターとして機能する人がいます。

このワークフローには、Git で実行できるさまざまなバリエーションがあります。誰かを手動でインテグレーターにしたくない場合は、成功時にスクリプトを実行するようにビルドボットを設定することができます。これにより、その人の変更がマスター リポジトリに自動的にマージされます (ただし、自動マージは機能せず、マージ結果もテストする必要がありました。なぜなら、きれいにマージされたコードでも他の問題が発生する場合があるからです)。

于 2009-03-26T03:24:49.343 に答える
1

チームシティなどの継続的インテグレーションソフトウェアを使用すると、コミット前のビルドとテストを実行できると思います。私はそれを直接提供するvcsを知りません...あなたが使用するもののようなものがあるかもしれませんが、私はそれらに精通していません。

于 2009-03-25T11:49:49.573 に答える
1

Perforce で pre-commit フックを使用することもできます。また、.NET ショップの場合は、「ゲート付き」チェックインを要求するように Visual Studio を構成できます。

于 2011-11-18T20:24:18.527 に答える
0

カスタム ワーク アイテムを使用した VSTS ですね。これを使っても何も問題はないと思います。レポートが組み込まれています。自動化の選択。なぜだめですか?

于 2009-03-26T14:50:51.347 に答える
0

Most CI implementations have a mechanism to reject check-ins that don't meet all the criteria (most notably pass all the tests). They're called by different names. VCS should do what they do best.. version source code.

于 2011-11-20T04:11:58.387 に答える