在一個合理的「僅合併到master」git工作流程(例如gitflow)中 - 所有更改都發生在分支中,然後合併(可能作爲Pull Request的一部分) - 如何處理版本控制?如何將版本控制與僅合併到主Git工作流?
對於標記,我很容易就可以git tag
特定的合併提交,沒什麼大不了的。
但是,許多應用程序框架依賴版本文件(例如package.json
或gemspec
甚至自定義文件)。
我看到幾個選項:
- 修改該文件作爲分支的一部分。這並不是很好,因爲你很少提前知道哪個版本會先合併,特別是有許多分支並行運行的大型團隊。
- 提交後修改文件。這不是很好,因爲我現在承諾掌握,並且b-自動化的CI/CD將抓住之前的提交併釋放它,但它具有舊版本號和c-有2個提交以用於一個版本的提交,有可能檢出錯誤的版本;容易出現人爲錯誤
- 使版本文件成爲模板並從git標籤自動生成它。這也不是很好,因爲本地工具會破壞它(嘗試運行
npm <anything>
且無效的package.json
),並且回購不再可以作爲原子單位獨立運行。
是否有一個合理的標準方式來做到這一點,當版本控制是在提交的一部分的文件?
大部分我都有,謝謝@IrLED。您的建議的關鍵是僅通過CI/CD更改版本控制文件?對此的挑戰是,在那裏通常比只有版本更多。想想'package.json'或'Gemfile'。在正常的開發過程中,大部分需要改變;只有一個領域需要控制。 – deitch
>您的建議的關鍵是僅通過CI/CD更改版本控制文件? 是的,就是這一點。要將受保護的部分與公共可用部分分開,可以運行'package.json'的預處理類型 - 從ver文件注入值。 – IrLED
我需要通過一點思考。這需要一些非常脆弱的邏輯 - 每個文件類型 - 以使用戶能夠改變除了那一行之外的所有內容。 – deitch