AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當(dāng)前位置:首頁 > 科技  > 軟件

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

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

譯者 | 劉汪洋mRn28資訊網(wǎng)——每日最新資訊28at.com

審校 | 重樓mRn28資訊網(wǎng)——每日最新資訊28at.com

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

盡管幾個月前“合并隊(duì)列”還是一個不太為人所知的術(shù)語,現(xiàn)在卻越來越受到業(yè)界的重視。無論是像 GitHub 這樣的行業(yè)領(lǐng)袖的公告,還是實(shí)際的技術(shù)解決方案,合并隊(duì)列正逐漸被軟件開發(fā)團(tuán)隊(duì)所采納。mRn28資訊網(wǎng)——每日最新資訊28at.com

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

準(zhǔn)備好了嗎?讓我們開始吧。mRn28資訊網(wǎng)——每日最新資訊28at.com

“合并隊(duì)列”是什么?

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

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

每位團(tuán)隊(duì)成員每天都可能創(chuàng)建許多 Pull Request,然后由倉庫維護(hù)者將其加入隊(duì)列。聽起來很簡單,不是嗎?mRn28資訊網(wǎng)——每日最新資訊28at.com

更準(zhǔn)確地說,你不僅僅是將基礎(chǔ)的 PR 加入隊(duì)列。隊(duì)列中的所有 PR 都已經(jīng)得到了維護(hù)者的批準(zhǔn),這意味著它們已經(jīng)通過了所有必要的檢查。mRn28資訊網(wǎng)——每日最新資訊28at.com

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

為什么需要合并隊(duì)列?

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

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

要理解合并隊(duì)列如何解決問題,你首先必須了解問題本身。mRn28資訊網(wǎng)——每日最新資訊28at.com

請想象以下場景:mRn28資訊網(wǎng)——每日最新資訊28at.com

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

此時,你可以通過以下圖示來表示倉庫的狀態(tài):mRn28資訊網(wǎng)——每日最新資訊28at.com

image.pngimage.pngmRn28資訊網(wǎng)——每日最新資訊28at.com

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

當(dāng) PR1 仍處于打開狀態(tài)時,主分支接收了另一個提交。無論這個新提交是直接推送到主分支還是從另一個 Pull Request 合并的,關(guān)鍵是主分支已經(jīng)發(fā)生了變化。mRn28資訊網(wǎng)——每日最新資訊28at.com

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

image.pngimage.pngmRn28資訊網(wǎng)——每日最新資訊28at.com

你會注意到 PR1 仍被持續(xù)集成系統(tǒng)視為有效,這是合理的,因?yàn)橹挥兄鞣种Оl(fā)生了變化,而 PR1 并未發(fā)生改變。mRn28資訊網(wǎng)——每日最新資訊28at.com

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

你滿懷信心地點(diǎn)擊了那個綠色按鈕。mRn28資訊網(wǎng)——每日最新資訊28at.com

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

現(xiàn)在,當(dāng)你試圖合并 PR1 并創(chuàng)建了一個新的合并提交時,持續(xù)集成測試卻失敗了。為什么會這樣呢?mRn28資訊網(wǎng)——每日最新資訊28at.com

image.pngimage.pngmRn28資訊網(wǎng)——每日最新資訊28at.com

實(shí)際上,當(dāng) PR1 被標(biāo)記為有效時,CI 并沒有用主分支新添加的提交再次測試 PR1。mRn28資訊網(wǎng)——每日最新資訊28at.com

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

如何應(yīng)對這一挑戰(zhàn)?

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

  • 僅在功能分支的頂部運(yùn)行持續(xù)集成,不強(qiáng)制功能分支與主分支保持同步。主要缺點(diǎn)是功能分支可能與主分支兼容,但也可能不兼容。
  • 要求所有功能分支與目標(biāo)分支保持最新。主要缺點(diǎn)在于這會消耗大量的時間和資源。

對于采用持續(xù)集成/持續(xù)交付(CI/CD)流程的組織和團(tuán)隊(duì)來說,這是一種常見的挑戰(zhàn)。如果你正面臨這個問題,不必?fù)?dān)心,因?yàn)檎嬲慕鉀Q方案已經(jīng)找到了!mRn28資訊網(wǎng)——每日最新資訊28at.com

真正的解決方案:合并隊(duì)列

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

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

如下圖所示,CI 將重新運(yùn)行測試。如果 Pull Request 失敗,則會被標(biāo)記為失敗并從隊(duì)列中移除。當(dāng)然,如果 PR 有效,并且所有檢查都通過了,它將被合并。mRn28資訊網(wǎng)——每日最新資訊28at.com

image.pngimage.pngmRn28資訊網(wǎng)——每日最新資訊28at.com

另一個實(shí)際場景:多個 Pull Request 已驗(yàn)證,準(zhǔn)備合并。mRn28資訊網(wǎng)——每日最新資訊28at.com

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

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

image.pngimage.pngmRn28資訊網(wǎng)——每日最新資訊28at.com

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

image.pngimage.pngmRn28資訊網(wǎng)——每日最新資訊28at.com

你可以根據(jù)需要重復(fù)這個過程,逐一處理隊(duì)列中的每個過時 Pull Request。mRn28資訊網(wǎng)——每日最新資訊28at.com

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

合并隊(duì)列的工作機(jī)制

了解合并隊(duì)列能解決的問題后,我們來深入探討其工作機(jī)制。mRn28資訊網(wǎng)——每日最新資訊28at.com

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

1. 將有效的 PR 加入隊(duì)列

合并隊(duì)列引擎會在你的 Pull Request 上運(yùn)行。所有滿足條件的 Pull Request 將被添加到隊(duì)列中。mRn28資訊網(wǎng)——每日最新資訊28at.com

2. 更新與 CI

合并隊(duì)列會確保隊(duì)列中的每個 PR 與主分支保持同步,以確保其最新狀態(tài)。mRn28資訊網(wǎng)——每日最新資訊28at.com

隨后,CI 會重新運(yùn)行,以確認(rèn) PR 是否可以合并。mRn28資訊網(wǎng)——每日最新資訊28at.com

3. 合并還是不合并:決策點(diǎn)

存在兩種截然不同的情況:mRn28資訊網(wǎng)——每日最新資訊28at.com

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

Mergify 的合并隊(duì)列特點(diǎn)是什么?

具體來說,Mergify 的合并隊(duì)列實(shí)現(xiàn)了你剛剛了解的所有功能。
作為市場上首批合并隊(duì)列之一,Mergify 已經(jīng)贏得了數(shù)千名用戶的滿意評價(jià)。mRn28資訊網(wǎng)——每日最新資訊28at.com

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

幸運(yùn)的是,Mergify 可以滿足這些需求!mRn28資訊網(wǎng)——每日最新資訊28at.com

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

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

image.pngimage.pngmRn28資訊網(wǎng)——每日最新資訊28at.com

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

Mergify 通過 batch_size 選項(xiàng)允許一次性檢查多個 Pull Request 的合并性。mRn28資訊網(wǎng)——每日最新資訊28at.com

3. 多隊(duì)列管理:將 PR 分配到專用隊(duì)列

通過使用多個隊(duì)列,可以根據(jù)優(yōu)先級將 Pull Request 分配到不同的隊(duì)列中。mRn28資訊網(wǎng)——每日最新資訊28at.com

4. 隊(duì)列凍結(jié):暫停所有合并過程

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

5.優(yōu)先級管理:優(yōu)先處理特定 Pull Request

你可以根據(jù)標(biāo)簽、所有者等因素選擇哪個 PR 應(yīng)該首先合并。最終的決策權(quán)在你手中!mRn28資訊網(wǎng)——每日最新資訊28at.com

結(jié)論

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

譯者介紹

劉汪洋,51CTO社區(qū)編輯,昵稱:明明如月,一個擁有 5 年開發(fā)經(jīng)驗(yàn)的某大廠高級 Java 工程師,擁有多個主流技術(shù)博客平臺博客專家稱號。mRn28資訊網(wǎng)——每日最新資訊28at.com

原文標(biāo)題:What's a Merge Queue and Why Use it?,作者:Wakatepe-mergifymRn28資訊網(wǎng)——每日最新資訊28at.com


mRn28資訊網(wǎng)——每日最新資訊28at.com


mRn28資訊網(wǎng)——每日最新資訊28at.com

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

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

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

下一篇: 用.NET X64 Native AOT編寫的操作系統(tǒng)

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 把LangChain跑起來的三個方法

    使用LangChain開發(fā)LLM應(yīng)用時,需要機(jī)器進(jìn)行GLM部署,好多同學(xué)第一步就被勸退了,那么如何繞過這個步驟先學(xué)習(xí)LLM模型的應(yīng)用,對Langchain進(jìn)行快速上手?本片講解3個把LangChain跑起來
  • 三言兩語說透柯里化和反柯里化

    JavaScript中的柯里化(Currying)和反柯里化(Uncurrying)是兩種很有用的技術(shù),可以幫助我們寫出更加優(yōu)雅、泛用的函數(shù)。本文將首先介紹柯里化和反柯里化的概念、實(shí)現(xiàn)原理和應(yīng)用
  • 只需五步,使用start.spring.io快速入門Spring編程

    步驟1打開https://start.spring.io/,按照屏幕截圖中的內(nèi)容創(chuàng)建項(xiàng)目,添加 Spring Web 依賴項(xiàng),并單擊“生成”按鈕下載 .zip 文件,為下一步做準(zhǔn)備。請?jiān)谶M(jìn)入步驟2之前進(jìn)行解壓。圖
  • 東方甄選單飛:有些鳥注定是關(guān)不住的

    文/彭寬鴻編輯/羅卿東方甄選創(chuàng)始人俞敏洪帶隊(duì)的“7天甘肅行”直播活動已在近日順利收官。成立后一年多時間里,東方甄選要脫離抖音自立門戶的傳聞不絕于耳,“7
  • 華為發(fā)布HarmonyOS 4:更好玩、更流暢、更安全

    在8月4日的華為開發(fā)者大會2023(HDC.Together)大會上,HarmonyOS 4正式發(fā)布。自2019年發(fā)布以來,HarmonyOS一直以用戶為中心,經(jīng)歷四年多的發(fā)展HarmonyOS已
  • 華為HarmonyOS 4.0將于8月4日發(fā)布 或搭載AI大模型技術(shù)

    華為宣布HarmonyOS4.0將于8月4日正式發(fā)布。此前,華為已經(jīng)針對開發(fā)者公布了HarmonyOS4.0,以便于開發(fā)者提前進(jìn)行適配,也因此被曝光出了一些新系統(tǒng)的特性
  • 2納米決戰(zhàn)2025

    集微網(wǎng)報(bào)道 從三強(qiáng)爭霸到四雄逐鹿,2nm的廝殺聲已然隱約傳來。無論是老牌勁旅臺積電、三星,還是誓言重回先進(jìn)制程領(lǐng)先地位的英特爾,甚至初成立不久的新
  • 聯(lián)想小新Pad Pro 12.6將要推出,搭載高通驍龍 870 處理器

    聯(lián)想小新Pad Pro 12.6將于秋季新品會上推出,官方按照慣例直接在發(fā)布會前給出了機(jī)型的所有參數(shù)。聯(lián)想小新 Pad Pro 12.6 將搭載高通驍龍 870 處理器,重量為 5
  • onebot M24巧系列一體機(jī)采用輕薄機(jī)身設(shè)計(jì),現(xiàn)已在各平臺開售

    onebot M24 巧系列一體機(jī)目前已在線上線下各平臺同步開售。onebot M24 巧系列采用一體化輕薄機(jī)身設(shè)計(jì),最薄處為 10.15mm,擁有寶石紅、午夜藍(lán)、石墨綠、雅致
Top