iT邦幫忙

2024 iThome 鐵人賽

DAY 13
0
生成式 AI

從系統設計切入,探索 GenAI 在企業中的實踐系列 第 13

[Day13] 從單打獨鬥到團隊協作:Git 流程規範制定

  • 分享至 

  • xImage
  •  

在軟體開發的道路上,從獨立開發者到團隊協作是一個重要的里程碑。這個轉變不僅需要調整工作方式,更要掌握新的工具和流程。其中,Git版本控制系統和 CI / CD(持續整合/持續部署)流程是現代軟體開發中不可或缺的關鍵元素。它們不僅提高了團隊協作的效率,還確保了程式碼品質和部署的穩定性。

Branch 分支策略

採用合適的分支策略對於團隊協作十分重要,它能有效管理程式碼版本,並保持開發流程順暢。
其中 Git Flow 是一種常見且結構明確的分支策略,適合需要同時管理多版本的項目,包含以下主要分支:

  1. 主分支(main/master):正式發布版本,保持可部署狀態。
  2. 開發分支(develop):作為功能開發的整合分支,包含最新的開發程式碼。
  3. 功能分支(feature/*):用於新功能開發,從 develop 分支創建,完成後併回 develop。
  4. 發布分支(release/*):準備新版本,允許錯誤修正和版本號更新,完成後併到 main 和 develop。
  5. 修復分支(hotfix/*):用於快速修復正式環境的問題,從 main 分支創建,修復後併回 main 和 develop。

https://ithelp.ithome.com.tw/upload/images/20240912/20151660TXePuCfATB.jpg

以上圖為例,main 分支代表穩定的發布版本,develop 分支從 main 分出並作為主要開發分支,feature/login 是從 develop 分出的功能分支,開發完後併回 develop。而當開發完成並準備發布時,會從 develop 創建 release/1.0 分支,完成後合併回 maindevelop。如果正式環境出現問題,會從 main 分出 hotfix/1.1,修復後同樣合併回 maindevelop

這種分支結構為每個分支設定了明確的角色和生命週期。開發人員可以在功能分支上獨立開發,不影響主分支開發。發布流程更加有條理,而專門的發布和修復分支確保每次版本發布都經過充分的準備。修復分支還允許團隊迅速處理正式環境的問題,而不打亂正在進行的開發工作。然而雖然 Git Flow 適合大型項目,但對於小型持續部署的項目,可能過於複雜。在這些情況下,團隊可以選擇更簡化的 GitHub Flow 或 GitLab Flow。

Converntional commits 約定式提交

Conventional Commits 提供了一個結構化的 commit 訊息規範,目的是為了讓 commit 訊息更加清晰且易於追蹤。這樣的規範能幫助開發團隊更有效地理解每次變更的目的,並且在進行版本控制、代碼審查、甚至自動化流程(如版本號管理和變更日誌生成)時,提供有用的訊息。

完整的 Conventional Commits 框架包含幾個關鍵元素,例如:

<type>[optional scope]: <description>
[optional body]
[optional footer(s)]

而其中 type 又分為以下數類:

  • feat: 表示新增功能
  • fix: 表示修復 bug
  • docs: 只更改文件
  • style: 不影響代碼含義的更改(如格式化、分號修正)
  • perf: 改善性能的代碼更改
  • refactor: 代碼重構,不新增功能或修復 bug
  • test: 增加或修改測試
  • chore: 修改建構工具或輔助工具的配置文件

而標準的 commit 訊息應該包含類型、影響範圍和簡要的描述,例如:

feat(text-generation): implement temperature parameter for output diversity
Add a new 'temperature' parameter to the text generation API, allowing users to control the randomness of the generated text. Higher values increase diversity but may reduce coherence.
perf(inference): optimize batch processing for faster response times
Implement a new batching strategy that reduces GPU memory fragmentation and increases throughput. This change results in a 30% reduction in average response time for multi-user scenarios.

然而,在實際開發過程中,這樣的規範通常會根據團隊的需要進行簡化。許多團隊可能不會嚴格遵守每一個細節,而是針對項目的規模和複雜度來調整規範。因此,對於開發者來說,了解這些規範是重要的,但更重要的是遵循團隊的實際規則和流程。


上一篇
[Day12] 微服務與容器化:可以讓產品規模擴大的 RAG 架構
下一篇
[Day14] 加速開發:CI/CD 實踐自動化部署策略
系列文
從系統設計切入,探索 GenAI 在企業中的實踐27
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言