[英]Which version control programs can enforce running & passing of tests before integration of changes?
在我的工作中,我們目前使用Aegis版本控制/ SCM。 我們配置它的方式,我們有一堆測試,它強制以下事情是真實的,然后才能集成更改:
通過測試驅動開發(TDD),這些似乎是明智的要求。 但我還沒有聽說過任何其他版本控制系統可以做到這一點。 (我們目前不打算轉換,但我想知道將來如何不使用Aegis。)
我會對任何可以做到這一點的VCS(分布式或非分布式)感興趣,我也對現有VCS的任何插件/擴展感興趣。 優選地是開源軟件。
ETA:好的,似乎通常要做的是擁有VCS +持續集成軟件,並且運行測試是作為構建的一部分自動化的,而不是單獨的步驟。 如果我理解正確,那仍然允許您提交未通過測試的代碼,只是您收到通知 - 是嗎? 有什么東西可以阻止你完全集成/提交它嗎?
IMO你最好使用像CruiseControl或Hudson這樣的持續集成系統,如果你想強制你的測試通過,並根據測試結果進行構建而不是簽入。 這些工具設置簡單,您可以通過網頁獲得結果內置通知(通過電子郵件,RSS或瀏覽器插件)和測試結果報告的優勢。
關於問題的更新,您是對的 - VCS + CI允許您提交未通過測試的代碼; 對於大多數CI設置,除非所有測試都通過,否則您將無法獲得產品的最終版本。 如果你真的想要阻止任何人提交,除非所有的測試都通過,你將不得不像其他人所建議的那樣在VCS中使用鈎子。 然而,這在我看來很難處理 - 要么開發人員每次進行簽到都必須運行所有測試,包括與他們正在制作的簽入無關的測試,或者你必須制作一些非常精細的VCS鈎子,只運行與給定簽入相關的測試。 根據我的經驗,依靠開發人員在本地運行相關測試並讓CI系統偶爾發現錯誤會更有效率。
使用subversion和git,您可以添加預提交掛鈎來執行此操作。
聽起來你需要看看連續整合(或其變體)。
想想Git也有應用補丁的鈎子。
Subversion和git都通過pre-commit鈎子支持這個。
Visual Studio Team System通過簽入策略本地支持此功能。
我相信Rational ClearCase也支持它,雖然我從來沒有見過這樣證明,所以我不能肯定地說。
我相信團隊城市等持續集成軟件允許您進行預提交構建和測試。 我不知道任何直接提供它的vcs ......可能有一些像你使用的但我不熟悉它們。
您還可以在Perforce中使用預提交掛鈎。 而且,如果您是.NET商店,Visual Studio可以配置為需要“門控”簽入。
帶有自定義工作項的VSTS,對吧? 我覺得使用它沒有任何問題。 內置報告功能。 選擇自動化。 為什么不?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.