簡體   English   中英

在集成更改之前,哪些版本控制程序可以強制執行測試的運行和傳遞?

[英]Which version control programs can enforce running & passing of tests before integration of changes?

在我的工作中,我們目前使用Aegis版本控制/ SCM。 我們配置它的方式,我們有一堆測試,它強制以下事情是真實的,然后才能集成更改:

  • 必須運行完整的測試集。
  • 所有測試都必須通過。

通過測試驅動開發(TDD),這些似乎是明智的要求。 但我還沒有聽說過任何其他版本控制系統可以做到這一點。 (我們目前不打算轉換,但我想知道將來如何不使用Aegis。)

我會對任何可以做到這一點的VCS(分布式或非分布式)感興趣,我也對現有VCS的任何插件/擴展感興趣。 優選地是開源軟件。

ETA:好的,似乎通常要做的是擁有VCS +持續集成軟件,並且運行測試是作為構建的一部分自動化的,而不是單獨的步驟。 如果我理解正確,那仍然允許您提交未通過測試的代碼,只是您收到通知 - 是嗎? 有什么東西可以阻止你完全集成/提交它嗎?

IMO你最好使用像CruiseControlHudson這樣的持續集成系統,如果你想強制你的測試通過,並根據測試結果進行構建而不是簽入。 這些工具設置簡單,您可以通過網頁獲得結果內置通知(通過電子郵件,RSS或瀏覽器插件)和測試結果報告的優勢。

關於問題的更新,您是對的 - VCS + CI允許您提交未通過測試的代碼; 對於大多數CI設置,除非所有測試都通過,否則您將無法獲得產品的最終版本。 如果你真的想要阻止任何人提交,除非所有的測試都通過,你將不得不像其他人所建議的那樣在VCS中使用鈎子。 然而,這在我看來很難處理 - 要么開發人員每次進行簽到都必須運行所有測試,包括與他們正在制作的簽入無關的測試,或者你必須制作一些非常精細的VCS鈎子,只運行與給定簽入相關的測試。 根據我的經驗,依靠開發人員在本地運行相關測試並讓CI系統偶爾發現錯誤會更有效率。

使用subversion和git,您可以添加預提交掛鈎來執行此操作。

聽起來你需要看看連續整合(或其變體)。

想想Git也有應用補丁的鈎子。

Subversiongit都通過pre-commit鈎子支持這個。

Visual Studio Team System通過簽入策略本地支持此功能。

我相信Rational ClearCase也支持它,雖然我從來沒有見過這樣證明,所以我不能肯定地說。

我們使用gitbuildbot做類似的事情,雖然不完全相同。 我們為每個開發人員提供他們自己的Git存儲庫,並將buildbot設置為隨時推送到其中一個存儲庫。 然后有一個人充當集成商,可以檢查buildbot狀態,查看更改並合並他們的更改或告訴他們適當地修復某些內容。

您可以使用Git對此工作流程進行大量修改。 如果您不想手動讓某人成為集成商,您可以將buildbot設置為成功運行腳本,這會自動將該人員的更改合並到主存儲庫中(盡管它必須處理其中的案例)自動合並不起作用,它也必須測試合並結果,因為即使是干凈地合並的代碼有時也會引入其他問題)。

我相信團隊城市等持續集成軟件允許您進行預提交構建和測試。 我不知道任何直接提供它的vcs ......可能有一些像你使用的但我不熟悉它們。

您還可以在Perforce中使用預提交掛鈎。 而且,如果您是.NET商店,Visual Studio可以配置為需要“門控”簽入。

帶有自定義工作項的VSTS,對吧? 我覺得使用它沒有任何問題。 內置報告功能。 選擇自動化。 為什么不?

我在這里做的是遵循每個任務模式分支,它允許您測試已經提交到版本控制但仍然保持主線原始的代碼。 更多關於這種模式的信息

你可以找到關於集成策略的詳細信息在這里也對版本控制評論關於馬克·沙特爾沃思這里

大多數CI實現都有一種機制來拒絕不符合所有標准的簽入(最值得注意的是通過所有測試)。 他們被稱為不同的名字。 VCS應該做他們最擅長的..版本源代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM