我想知道使用Mercurial創建包含工件的版本修訂版本的最佳方式,該工件提供了流程執行的證據。例如,我們希望附加系統測試結果,檢查列表,發佈說明等,以便如果我們由客戶審覈,我們可以輕鬆地顯示我們執行了我們的流程。由於我們產品的安全性,這對我們很重要。管理Mercurial版本中的流程工件
我們的發佈管理流程將如下圖所示。所有開發人員都在本地回購,並定期推向主流。對於開發團隊之外的內部工程目的,Main是最新且最好但不一定安全的。
當我們想爲客戶或其他內部工程部門創建一個版本時,我們從候選版本分支(例如RC1)開始。如果需要修復,我們會向RC分支提交。測試發生在這個分支上。當RC被確定爲良好時,這些更改將合併回主。
我們認爲我們想要做的就是合併到一個Releases分支中。然而,我們有一個雞與雞蛋相關的問題:我們希望包含在版本修訂版中的工件包含修訂版的哈希等。這提供了明確的可追溯性,即測試和其他處理步驟在此精確修訂版本上執行。但是,爲了添加這些項目,我需要創建一個新的修訂版,並且在創建修訂版之前,我顯然無法知道該修訂版的哈希值是什麼。我想知道是否有某種方法來修改修訂而不更改散列?
例如,我可以想到的唯一方法就是在下圖中創建一個RC2.3修訂版本,其中包含必要的流程工件但實際上將RC2.2合併到版本。
然後,當然,我還有一個問題,那就是將RC2.2合併到發行版中會生成一個新的散列。所以,我的神器再次過時了。所以接下來的問題是是否有某種方法讓Release分支「指向」RC2.2。
順便說一下,如有必要,我們願意改變這個過程。我們使用此方法的原因如下:
CI系統正在監控main並啓動一系列構建,並在每次推動時執行自動化單元測試。主要有頻繁的變化,我們不希望人們使用它。
開發可以繼續進行,對發佈沒有影響。
任何版本分支上的修訂都會在我們的CI平臺上啓動一系列不同的任務,包括創建現場刷新實用程序的分發和所需映像(我們正在開發固件)。這就是我們向外部實體提供發佈的方式。
Main A--B--C--D--E--F--G--H--I--J--K--L---------M-------------N \ / \ / RC1 RC1.0--RC1.1 \ / \ \ / RC2 \ RC2.0--RC2.1--RC2.2 \ \ \ \ Releases ER1.0-----------------------------------PR1.0