日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

什么是 Merge Queue,為什么要使用它?

來源: 責編: 時間:2023-09-21 20:48:22 304觀看
導讀譯者 | 劉汪洋審校 | 重樓概括:這篇文章介紹了 Merge Queue 這一新的代碼合并方式,它可以讓開發者不用擔心代碼沖突和等待時間,而是把合并的任務交給一個自動化的隊列來處理。文章還介紹了一個實現了 Merge Queue 的工具

譯者 | 劉汪洋cmz28資訊網——每日最新資訊28at.com

審校 | 重樓cmz28資訊網——每日最新資訊28at.com

概括:這篇文章介紹了 Merge Queue 這一新的代碼合并方式,它可以讓開發者不用擔心代碼沖突和等待時間,而是把合并的任務交給一個自動化的隊列來處理。文章還介紹了一個實現了 Merge Queue 的工具 Mergify,它可以與 GitHub 集成,讓開發者更方便地使用 Merge Queue。cmz28資訊網——每日最新資訊28at.com

盡管幾個月前“合并隊列”還是一個不太為人所知的術語,現在卻越來越受到業界的重視。無論是像 GitHub 這樣的行業領袖的公告,還是實際的技術解決方案,合并隊列正逐漸被軟件開發團隊所采納。cmz28資訊網——每日最新資訊28at.com

因此,你可以深入探討這一主題,了解合并隊列的定義,其適用場景,以及它們在實際操作中的工作原理。cmz28資訊網——每日最新資訊28at.com

準備好了嗎?讓我們開始吧。cmz28資訊網——每日最新資訊28at.com

“合并隊列”是什么?

在探討為何要使用合并隊列之前,我們首先需要明確它的定義。cmz28資訊網——每日最新資訊28at.com

顧名思義,合并隊列是一系列等待合并的 Pull Request (簡稱 PR)的排列順序。cmz28資訊網——每日最新資訊28at.com

每位團隊成員每天都可能創建許多 Pull Request,然后由倉庫維護者將其加入隊列。聽起來很簡單,不是嗎?cmz28資訊網——每日最新資訊28at.com

更準確地說,你不僅僅是將基礎的 PR 加入隊列。隊列中的所有 PR 都已經得到了維護者的批準,這意味著它們已經通過了所有必要的檢查。cmz28資訊網——每日最新資訊28at.com

因此,你得到了一個充滿已驗證 Pull Request 的隊列。這聽起來很有趣,但似乎并不實用。為什么不逐一合并它們呢?為了解答這個問題,我們先來看看如果你不使用合并隊列,可能會遇到哪些常見問題。cmz28資訊網——每日最新資訊28at.com

為什么需要合并隊列?

坦白說,有許多理由支持使用合并隊列。在這一部分,你將了解一個真正棘手的問題,以及如何通過使用合并隊列來解決它。cmz28資訊網——每日最新資訊28at.com

常見問題:合并過時的 Pull Request

要理解合并隊列如何解決問題,你首先必須了解問題本身。cmz28資訊網——每日最新資訊28at.com

請想象以下場景:cmz28資訊網——每日最新資訊28at.com

  • 主分支已經通過了持續集成測試。
  • 創建了一個 Pull Request,并通過了 持續集成(CI),我們稱之為 PR1。

此時,你可以通過以下圖示來表示倉庫的狀態:cmz28資訊網——每日最新資訊28at.com

image.pngimage.pngcmz28資訊網——每日最新資訊28at.com

目前一切似乎都在正常運行,但這種情況并不會持續下去。讓我們深入了解一下。cmz28資訊網——每日最新資訊28at.com

當 PR1 仍處于打開狀態時,主分支接收了另一個提交。無論這個新提交是直接推送到主分支還是從另一個 Pull Request 合并的,關鍵是主分支已經發生了變化。cmz28資訊網——每日最新資訊28at.com

隨后,持續集成(CI)系統針對主分支運行了測試,并再次通過。此時,你可以通過以下圖示來描述你的倉庫及其持續集成系統的狀態:cmz28資訊網——每日最新資訊28at.com

image.pngimage.pngcmz28資訊網——每日最新資訊28at.com

你會注意到 PR1 仍被持續集成系統視為有效,這是合理的,因為只有主分支發生了變化,而 PR1 并未發生改變。cmz28資訊網——每日最新資訊28at.com

由于代碼之間沒有沖突,GitHub 認為 PR1 是可以合并的,合并按鈕變成了綠色。cmz28資訊網——每日最新資訊28at.com

你滿懷信心地點擊了那個綠色按鈕。cmz28資訊網——每日最新資訊28at.com

然而,正如你所預料,這可能會帶來一個意外的“驚喜”——并不是好事。cmz28資訊網——每日最新資訊28at.com

現在,當你試圖合并 PR1 并創建了一個新的合并提交時,持續集成測試卻失敗了。為什么會這樣呢?cmz28資訊網——每日最新資訊28at.com

image.pngimage.pngcmz28資訊網——每日最新資訊28at.com

實際上,當 PR1 被標記為有效時,CI 并沒有用主分支新添加的提交再次測試 PR1。cmz28資訊網——每日最新資訊28at.com

然而,主分支中的最后一個提交引入了新的測試,而 PR1 并未包含正確的代碼來通過這個新測試,這一情況雖讓人沮喪,但卻合情合理。cmz28資訊網——每日最新資訊28at.com

如何應對這一挑戰?

這個問題的核心在于 Rebase 的操作以及每個 Pull Request 需要與主分支保持最新的必要性。如果你不采用合并隊列,通常有兩個選擇:cmz28資訊網——每日最新資訊28at.com

  • 僅在功能分支的頂部運行持續集成,不強制功能分支與主分支保持同步。主要缺點是功能分支可能與主分支兼容,但也可能不兼容。
  • 要求所有功能分支與目標分支保持最新。主要缺點在于這會消耗大量的時間和資源。

對于采用持續集成/持續交付(CI/CD)流程的組織和團隊來說,這是一種常見的挑戰。如果你正面臨這個問題,不必擔心,因為真正的解決方案已經找到了!cmz28資訊網——每日最新資訊28at.com

真正的解決方案:合并隊列

解決方案就是使用合并隊列。它在合并之前會更新所有與主分支不同步的 Pull Request。實際上,合并隊列會要求 CI 系統使用主分支的最新代碼重新測試 PR。cmz28資訊網——每日最新資訊28at.com

如果你在之前描述的情況下使用合并隊列,系統會自動將主分支合并到功能分支中。cmz28資訊網——每日最新資訊28at.com

如下圖所示,CI 將重新運行測試。如果 Pull Request 失敗,則會被標記為失敗并從隊列中移除。當然,如果 PR 有效,并且所有檢查都通過了,它將被合并。cmz28資訊網——每日最新資訊28at.com

image.pngimage.pngcmz28資訊網——每日最新資訊28at.com

另一個實際場景:多個 Pull Request 已驗證,準備合并。cmz28資訊網——每日最新資訊28at.com

合并隊列會按照順序安排這些 Pull Request 的合并,并確保它們與主分支保持同步。當然,只有當 Pull Request滿足所有條件時,才會進行同步更新。cmz28資訊網——每日最新資訊28at.com

但是,如果你剛合并了一個已更新的 Pull Request,緊接著又發現另一個 Pull Request 仍然過時,那會發生什么情況呢?為了更清晰地解釋這個過程,我們可以通過下圖來理解:cmz28資訊網——每日最新資訊28at.com

image.pngimage.pngcmz28資訊網——每日最新資訊28at.com

合并隊列的作用是確保在合并之前,第二個 Pull Request 與主分支的最新版本保持同步。通過這樣的操作,可以避免將過時或有缺陷的 Pull Request 合并到主分支中。cmz28資訊網——每日最新資訊28at.com

image.pngimage.pngcmz28資訊網——每日最新資訊28at.com

你可以根據需要重復這個過程,逐一處理隊列中的每個過時 Pull Request。cmz28資訊網——每日最新資訊28at.com

雖然軟件開發的過程并不總是簡單,但合并隊列的使用無疑可以讓整個流程變得更加順暢和高效。cmz28資訊網——每日最新資訊28at.com

合并隊列的工作機制

了解合并隊列能解決的問題后,我們來深入探討其工作機制。cmz28資訊網——每日最新資訊28at.com

合并隊列在視覺上可能顯得有些復雜,我們可以逐步分析其工作流程和組成部分。cmz28資訊網——每日最新資訊28at.com

1. 將有效的 PR 加入隊列

合并隊列引擎會在你的 Pull Request 上運行。所有滿足條件的 Pull Request 將被添加到隊列中。cmz28資訊網——每日最新資訊28at.com

2. 更新與 CI

合并隊列會確保隊列中的每個 PR 與主分支保持同步,以確保其最新狀態。cmz28資訊網——每日最新資訊28at.com

隨后,CI 會重新運行,以確認 PR 是否可以合并。cmz28資訊網——每日最新資訊28at.com

3. 合并還是不合并:決策點

存在兩種截然不同的情況:cmz28資訊網——每日最新資訊28at.com

  • 所有檢查通過 → 合并 PR。
  • 測試失敗 → 將 PR 從隊列中移除。

Mergify 的合并隊列特點是什么?

具體來說,Mergify 的合并隊列實現了你剛剛了解的所有功能。
作為市場上首批合并隊列之一,Mergify 已經贏得了數千名用戶的滿意評價。cmz28資訊網——每日最新資訊28at.com

雖然前述的常見功能足以解決許多棘手問題,但在更復雜和特定的情況下,你可能需要一些非常具體的功能。cmz28資訊網——每日最新資訊28at.com

幸運的是,Mergify 可以滿足這些需求!cmz28資訊網——每日最新資訊28at.com

1. 推測性檢查:并行測試不同的 PR

隊列中的第一個 Pull Request 將被加入合并流程,并與其他請求一起并行測試,以便更快地合并。cmz28資訊網——每日最新資訊28at.com

image.pngimage.pngcmz28資訊網——每日最新資訊28at.com

2. 批次處理:一次檢查和合并多個 PR

Mergify 通過 batch_size 選項允許一次性檢查多個 Pull Request 的合并性。cmz28資訊網——每日最新資訊28at.com

3. 多隊列管理:將 PR 分配到專用隊列

通過使用多個隊列,可以根據優先級將 Pull Request 分配到不同的隊列中。cmz28資訊網——每日最新資訊28at.com

4. 隊列凍結:暫停所有合并過程

Mergify 允許暫停一個或多個隊列的合并過程,從而增強了對代碼合并方式、時間的控制和靈活性。cmz28資訊網——每日最新資訊28at.com

5.優先級管理:優先處理特定 Pull Request

你可以根據標簽、所有者等因素選擇哪個 PR 應該首先合并。最終的決策權在你手中!cmz28資訊網——每日最新資訊28at.com

結論

現在,各位讀者應該對合并隊列的概念有了全面的了解,從工作原理到使用的理由,這一概念對你來說應該已經一目了然。如果你想使用 Mergify 的合并隊列解決方案,可以去官網進一步詳情。cmz28資訊網——每日最新資訊28at.com

譯者介紹

劉汪洋,51CTO社區編輯,昵稱:明明如月,一個擁有 5 年開發經驗的某大廠高級 Java 工程師,擁有多個主流技術博客平臺博客專家稱號。cmz28資訊網——每日最新資訊28at.com

原文標題:What's a Merge Queue and Why Use it?,作者:Wakatepe-mergifycmz28資訊網——每日最新資訊28at.com


cmz28資訊網——每日最新資訊28at.com


cmz28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-10905-0.html什么是 Merge Queue,為什么要使用它?

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 三分鐘白話RocketMQ系列—— 如何保證消息順序性

下一篇: 用.NET X64 Native AOT編寫的操作系統

標簽:
  • 熱門焦點
  • 轎車從天而降電動車主被撞身亡 超速搶道所致:現場視頻讓網友吵翻

    近日,上海青浦區法院判決轎車從天而降電動車主被撞身亡案,轎車車主被判有期徒刑一年。案件顯示當時男子駕駛轎車在上海某路段行駛,前車忽然轉彎提速超車,
  • Rust中的高吞吐量流處理

    作者 | Noz編譯 | 王瑞平本篇文章主要介紹了Rust中流處理的概念、方法和優化。作者不僅介紹了流處理的基本概念以及Rust中常用的流處理庫,還使用這些庫實現了一個流處理程序
  • 學習JavaScript的10個理由...

    作者 | Simplilearn編譯 | 王瑞平當你決心學習一門語言的時候,很難選擇到底應該學習哪一門,常用的語言有Python、Java、JavaScript、C/CPP、PHP、Swift、C#、Ruby、Objective-
  • 一篇文章帶你了解 CSS 屬性選擇器

    屬性選擇器對帶有指定屬性的 HTML 元素設置樣式。可以為擁有指定屬性的 HTML 元素設置樣式,而不僅限于 class 和 id 屬性。一、了解屬性選擇器CSS屬性選擇器提供了一種簡單而
  • 慕巖炮轟抖音,百合網今何在?

    來源:價值研究所 作者:Hernanderz“難道就因為自己的一個產品牛逼了,從客服到總裁,都不愿意正視自己產品和運營上的問題,選擇逃避了嗎?”這一番話,出自百合網聯合創
  • 微博大門常打開,迎接海外畫師漂洋東渡

    作者:互聯網那些事“起猛了,我能看得懂日語了”。“為什么日本人說話我能聽懂?”“中文不像中文,日語不像日語,但是我竟然看懂了”…&hell
  • 造車兩年股價跌六成,小米的估值邏輯變了嗎?

    如果從小米官宣造車后的首個交易日起持有小米集團的股票,那么截至2023年上半年最后一個交易日,投資者將浮虧59.16%,同區間的恒生科技指數跌幅為52.78%
  • iQOO 11S或7月上市:搭載“雞血版”驍龍8Gen2 史上最強5G Soc

    去年底,iQOO推出了“電競旗艦”iQOO 11系列,作為一款性能強機,iQOO 11不僅全球首發2K 144Hz E6全感屏,搭載了第二代驍龍8平臺及144Hz電競屏,同時在快充
  • SN570 NVMe SSD固態硬盤 價格與性能兼具

    SN570 NVMe SSD固態硬盤是西部數據發布的最新一代WD Blue系列的固態硬盤,不僅閃存技術更為精進,性能也得到了進一步的躍升。WD Blue SN570 NVMe SSD的包裝外
Top 主站蜘蛛池模板: 安阳县| 怀远县| 台北县| 澄迈县| 鸡西市| 云梦县| 夏津县| 泸定县| 达孜县| 西峡县| 建德市| 嘉义县| 万山特区| 剑川县| 绵阳市| 治县。| 太原市| 临邑县| 隆安县| 绥德县| 房产| 霍州市| 平湖市| 丰城市| 蓬安县| 尉氏县| 新安县| 锡林浩特市| 贞丰县| 宁陕县| 应城市| 永泰县| 灵石县| 临夏市| 壤塘县| 太康县| 葵青区| 屏南县| 阿图什市| 沾益县| 互助|