日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

推送評審模式

云效代碼管理的AGit-Flow模式,支持使用git pr來通過命令行直接創建代碼評審,解決了創建評審的效率問題。使用該模式需要開發者在本地安裝git-repo工具,并執行指定的命令。另一方面,不少開發者也會關注是否可以針對提交的代碼進行審核,通過審核的代碼才可以被推送進目標分支。那么有沒有這樣一種方式,在不需要安裝任何工具的情況下,執行git push就可以自動創建評審,并且能夠支持對提交進行評審?使用推送評審模式,可以實現這一目標。

推送評審模式及其優勢

推送評審模式,是Codeup新推出的一種代碼協同方式,可以為用戶帶來全新、高效的代碼評審體驗:

  • 從開發者的角度,發起代碼評審不再需要創建新分支,也不必在開發完成后切換至瀏覽器來創建代碼評審,直接執行git push即可一鍵發起評審。

  • 從管理者的角度,可以設置讓開發人員向倉庫push代碼時,不再直接更新分支的代碼,而是自動創建代碼評審,通過評審的方式,保障代碼質量。

推送評審模式與現有分支模式對比:

分支開發模式

推送評審模式

提交代碼

在特性分支中提交

直接在主干上提交

發起代碼評審

Codeup網頁端操作

執行git push

更新代碼評審

更新特性分支

繼續執行git push

貢獻代碼所需權限

開發者及以上角色

瀏覽者及以上權限

代碼質量

僅保護分支受管控

所有分支的 push 均受管控

在代碼庫設置中開啟推送評審模式后,具有以下優勢:

  • 向倉庫貢獻代碼,發起代碼評審,不再需要創建新的分支,直接在主干上進行修改并提交即可,避免了冗余的分支管理成本。

  • git push不再直接推送分支內容,而是創建/更新代碼評審。

  • 如果代碼需要修補,提交后繼續執行git push,已發起的評審會自動更新。

  • 向倉庫貢獻代碼不再需要授予開發者權限,擁有倉庫的瀏覽者權限即可貢獻代碼,而且貢獻的代碼需要經過評審才能正式合入代碼庫。因此可以將直接寫庫的權限最小化到少數管理者手中,而大部分開發者僅需要讀權限即可,降低了代碼庫被意外修改的風險。

  • 支持指定push option來控制具體的推送行為,見 使用推送評審模式進行協作 一節。

開啟方式

倉庫設置 > 推送規則設置中,可以看到推送評審模式的開關,單擊此開關即可開啟/關閉推送評審模式的功能:

高的 (51)

重要

開啟推送評審模式后,會改變git push的行為,請先知悉并理解后再開啟推送評審模式:

  • 開啟推送評審模式后,執行git push不再直接更新遠端的代碼(即便擁有倉庫的開發者權限),而是自動創建/更新代碼評審。

  • 倉庫的瀏覽者,可以通過git push發起評審,但請放心此時代碼還未合入分支,需要根據分支評審和合并要求通過后才可手動合入。

  • 由于git push并不直接更新代碼而是創建評審,因此不會觸發推送事件的webhook。

  • 用戶可以在Codeup網頁端以評審的方式新建,編輯或刪除文件。

使用推送評審模式進行協作

下面,用幾個實際的例子,說明如何使用推送評審模式進行開發協作。

自動創建評審

假設現在接到了一個開發任務,需要開發一個新的特性,使用傳統的分支模式,需要檢出一個分支,并在分支上進行開發,推送分支后再發起特性分支至主干的評審。在使用推送評審模式后,這個過程被簡化為只需要兩步:

  • 在主干上進行開發。

  • git push。

在示例倉庫的master分支上開發,并創建了一個提交27e76f58

$ git log
commit 27e76f582ca7207a695dd8762b66ef443adcc572 (HEAD -> master)
Author: Codeup User <codeup.user@example.com>
Date:   Tue Oct 11 10:16:18 2022 +0800

    feat: new feature

    Signed-off-by: Codeup User <codeup.user@example.com>

commit 44094ec92eb122deab5a0367552bd081540c4353 (origin/master, origin/HEAD)
Author: Codeup User <codeup.user@example.com>
Date:   Tue Oct 11 10:09:39 2022 +0800

    Initial commit

然后,將改動推送至遠端,執行git push

$ git push
枚舉對象中: 4, 完成.
對象計數中: 100% (4/4), 完成.
使用 12 個線程進行壓縮
壓縮對象中: 100% (2/2), 完成.
寫入對象中: 100% (3/3), 310 字節 | 310.00 KiB/s, 完成.
總共 3(差異 0),復用 0(差異 0),包復用 0
remote: +-----------------------------------------------------------------------------------+
remote: | The following tips are provided by Codeup:                                        |
remote: +-----------------------------------------------------------------------------------+
remote: | Merge request #31620 has been created, please visit:                              |
remote: | https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo/merge_request/31620       |
remote: +-----------------------------------------------------------------------------------+
To https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo.git
 * [new reference]         master -> refs/merge-requests/31620/head

可以看到,開啟了推送評審模式后,git push沒有直接更新遠端的代碼,而是創建了一個代碼評審,ID 是31620。此代碼評審的源為本地最新的提交,目標則是當前的分支。可以通過代碼評審的詳情來確認:

高的 (55)

通過這種方式,不再需要創建特性分支,也不必切換至瀏覽器創建評審,極大簡化了創建代碼評審的步驟。同時,git push不再直接更新代碼,而是必須經過評審后才能合入,保障代碼質量。

自動更新評審

在代碼評審的過程中,往往需要根據評審者的意見,多次反復修改代碼,才能最終達到代碼的準入標準。那么,在修改了代碼后,相應的代碼評審要如何更新呢?這可以通過再次執行git push來完成。下面來看看實際的例子。

27e76f58的基礎上,根據評審意見修改了一些代碼,并增加了一個提交e00db452。

$ git log
commit e00db4522f2d6ca5b42377ca76c7b3a7e12db8a5 (HEAD -> master)
Author: Codeup User <codeup.user@example.com>
Date:   Tue Oct 11 11:09:42 2022 +0800

    feat: fix comment

    Signed-off-by: Codeup User <codeup.user@example.com>

commit 27e76f582ca7207a695dd8762b66ef443adcc572
Author: Codeup User <codeup.user@example.com>
Date:   Tue Oct 11 10:16:18 2022 +0800

    feat: new feature

    Signed-off-by: Codeup User <codeup.user@example.com>

commit 44094ec92eb122deab5a0367552bd081540c4353 (origin/master, origin/HEAD)
Author: Codeup User <codeup.user@example.com>
Date:   Tue Oct 11 10:09:39 2022 +0800

    Initial commit

然后,再次執行git push。

$ git push
枚舉對象中: 4, 完成.
對象計數中: 100% (4/4), 完成.
使用 12 個線程進行壓縮
壓縮對象中: 100% (2/2), 完成.
寫入對象中: 100% (3/3), 340 字節 | 340.00 KiB/s, 完成.
總共 3(差異 0),復用 0(差異 0),包復用 0
remote: +-----------------------------------------------------------------------------------+
remote: | The following tips are provided by Codeup:                                        |
remote: +-----------------------------------------------------------------------------------+
remote: | Merge request #31620 has been updated, please visit:                              |
remote: | https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo/merge_request/31620       |
remote: +-----------------------------------------------------------------------------------+
To https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo.git
   27e76f582c..e00db4522f  master -> refs/merge-requests/31620/head

提示信息中可以看出,這次推送更新了 ID為31620的代碼評審。查看評審詳情,看到代碼評審的源版本已經變為了e00db4522,并且提交歷史也變為了2。

高的 (52)

如果代碼仍然需要修改,重復以上流程即可。

創建新的評審

重復執行git push命令,會自動更新已經存在的評審。如果并不想更新評審,而是想要創建一個新的評審,那要如何操作呢?這可以通過在 push 命令中添加push option來實現。具體來說,執行 git push -o review=new,就可以創建新的代碼評審。

在本地改動一些代碼,再次執行git push -o review=new,成功創建了 ID 為31626的代碼評審。

$ git push -o review=new
枚舉對象中: 4, 完成.
對象計數中: 100% (4/4), 完成.
使用 12 個線程進行壓縮
壓縮對象中: 100% (2/2), 完成.
寫入對象中: 100% (3/3), 361 字節 | 361.00 KiB/s, 完成.
總共 3(差異 0),復用 0(差異 0),包復用 0
remote: +-----------------------------------------------------------------------------------+
remote: | The following tips are provided by Codeup:                                        |
remote: +-----------------------------------------------------------------------------------+
remote: | Merge request #31626 has been created, please visit:                              |
remote: | https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo/merge_request/31626       |
remote: +-----------------------------------------------------------------------------------+
To https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo.git
 * [new reference]         master -> refs/merge-requests/31626/head

需要注意的是,如果推送時已經存在源與目標完全相同的評審,那么將無法創建新的評審。

$ git push -o review=new
總共 0(差異 0),復用 0(差異 0),包復用 0
remote: +-----------------------------------------------------------------------------------+
remote: | The following tips are provided by Codeup:                                        |
remote: +-----------------------------------------------------------------------------------+
remote: | Merge request create failed. There exists a same merge request in progress:       |
remote: | https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo/merge_request/31620       |
remote: +-----------------------------------------------------------------------------------+
To https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo.git
 ! [remote rejected]       master -> master (create MR failed)
error: 無法推送一些引用到 'https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo.git'

更新指定的評審

在同時有多個開啟的代碼評審的情況下,執行git push時,會因無法判斷想要更新哪一個評審而失敗。

$ git push
枚舉對象中: 5, 完成.
對象計數中: 100% (5/5), 完成.
使用 12 個線程進行壓縮
壓縮對象中: 100% (2/2), 完成.
寫入對象中: 100% (3/3), 294 字節 | 294.00 KiB/s, 完成.
總共 3(差異 1),復用 0(差異 0),包復用 0
remote: +-------------------------------------------------------------------------------------------------+
remote: | The following tips are provided by Codeup:                                                      |
remote: +-------------------------------------------------------------------------------------------------+
remote: | You need to manually specify the merge request to update because there are already              |
remote: | multiple merge requests that you created earlier for the same target branch:                    |
remote: |                                                                                                 |
remote: | * [ID: 31626] https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo/merge_request/31626       |
remote: | * [ID: 31620] https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo/merge_request/31620       |
remote: |                                                                                                 |
remote: | Then, update specific merge request based on it's ID (MR-ID):                                   |
remote: |     git push -o review=<MR-ID>                                                                  |
remote: |                                                                                                 |
remote: | Or you can create a new one:                                                                    |
remote: |     git push -o review=new                                                                      |
remote: +-------------------------------------------------------------------------------------------------+
To https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo.git
 ! [remote rejected]       master -> master (unable to determine which mr to update)
error: 無法推送一些引用到 'https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo.git'

給出的提示信息中顯示,存在指向同一目標分支的兩個評審,ID分別為31626以及31620,因此無法判斷想要更新的是哪一個評審。此時有兩種解決方式:

  • 使用 -o review=new,創建一個新的代碼評審。

  • 使用 -o review=<MR-ID>,顯式的給出想要更新的評審的ID。

第一種方式在 創建新的評審 一節中已經演示過了,我們來看如何更新指定的評審。

假如此時要更新31626這個評審,那么具體的命令為: git push -o review=31626。

$ git push -o review=31626
枚舉對象中: 5, 完成.
對象計數中: 100% (5/5), 完成.
使用 12 個線程進行壓縮
壓縮對象中: 100% (2/2), 完成.
寫入對象中: 100% (3/3), 303 字節 | 303.00 KiB/s, 完成.
總共 3(差異 1),復用 0(差異 0),包復用 0
remote: +-----------------------------------------------------------------------------------+
remote: | The following tips are provided by Codeup:                                        |
remote: +-----------------------------------------------------------------------------------+
remote: | Merge request #31626 has been updated, please visit:                              |
remote: | https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo/merge_request/31626       |
remote: +-----------------------------------------------------------------------------------+
To https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo.git
   0ba010f2ff..037578c634  master -> refs/merge-requests/31626/head

這樣,就更新了 ID為31626的代碼評審。

更新評審的沖突解決

有時,想要更新代碼評審時,會發現評審可能已經被其他用戶更新了。此時,為了避免其他用戶的更新被覆蓋,更新會失敗。假設此時要更新31644這個評審,執行:git push -o review=31644

$ git push -o review=31644
枚舉對象中: 4, 完成.
對象計數中: 100% (4/4), 完成.
使用 12 個線程進行壓縮
壓縮對象中: 100% (2/2), 完成.
寫入對象中: 100% (3/3), 326 字節 | 326.00 KiB/s, 完成.
總共 3(差異 0),復用 0(差異 0),包復用 0
remote: +--------------------------------------------+
remote: | The following tips are provided by Codeup: |
remote: +--------------------------------------------+
remote: | MR is diverged with this push              |
remote: +--------------------------------------------+
To https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo.git
 ! [remote rejected]       master -> master (MR is diverged with this push)
error: 無法推送一些引用到 'https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo.git'

提示信息中此次push會引起評審的沖突,更新失敗了。此時有兩種選擇:

  • 拉取其他用戶的更新,在本地解決后再更新評審。

  • 強制刷新評審。

先來看第一種方式。拉取更新在本地解決后再更新評審。

首先,需要執行 git fetch origin refs/merge-requests/<mr-id>/head,這里mr-id31644,所以需要執行的命令是:git fetch origin refs/merge-requests/31644/head

$ git fetch origin refs/merge-requests/31644/head
來自 https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo
 * branch                  refs/merge-requests/31644/head -> FETCH_HEAD

然后,rebase本地的改動到評審對應的引用上。執行git rebase FETCH_HEAD。rebase操作可能會出現沖突,請根據實際情況解決。

$ git rebase FETCH_HEAD
成功變基并更新 refs/heads/master。

這樣,本地就擁有了遠端的代碼,然后重新執行push。

$ git push -o review=31644
枚舉對象中: 4, 完成.
對象計數中: 100% (4/4), 完成.
使用 12 個線程進行壓縮
壓縮對象中: 100% (2/2), 完成.
寫入對象中: 100% (3/3), 331 字節 | 331.00 KiB/s, 完成.
總共 3(差異 0),復用 0(差異 0),包復用 0
remote: +-----------------------------------------------------------------------------------+
remote: | The following tips are provided by Codeup:                                        |
remote: +-----------------------------------------------------------------------------------+
remote: | Merge request #31644 has been updated, please visit:                              |
remote: | https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo/merge_request/31644       |
remote: +-----------------------------------------------------------------------------------+
To https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo.git
   a4a2cad45c..8da076fb44  master -> refs/merge-requests/31644/head

這樣,就更新了31644這個代碼評審。

強制刷新評審

有時,不想合并其他用戶的改動,想要把評審強制刷新成本地的版本,這個時候應該如何操作呢?

此時,需要知道兩個值。

  • 一個是代碼評審的ID,即代碼評審URL的最后一段數字。例如,代碼評審的URL是 https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo/merge_request/31644,那么這個評審的ID即為31644

  • 另一個是代碼評審的源版本。在代碼評審的詳情頁可獲得。這里對應的源版本即為8da076fb

高的 (54)

然后,可以執行 git push -o review=<mr-id> -o old-oid=<old-oid>,對應這個例子,命令為git push -o review=31644 -o old-oid=8da076fb

這樣,就將31644這個評審刷新成了本地的版本。這個過程中,其他用戶的修改會被覆蓋,所以只有在明確的想要強制刷新版本時,再執行這個命令,以免丟失其他用戶的修改。

$ git push -o review=31644 -o old-oid=8da076fb
總共 0(差異 0),復用 0(差異 0),包復用 0
remote: +-----------------------------------------------------------------------------------+
remote: | The following tips are provided by Codeup:                                        |
remote: +-----------------------------------------------------------------------------------+
remote: | Merge request #31644 has been updated, please visit:                              |
remote: | https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo/merge_request/31644       |
remote: +-----------------------------------------------------------------------------------+
To https://codeup.aliyun.com/61234c2d1bd96aa110f27b9c/demo.git
   8da076fb44..8da076fb44  master -> refs/merge-requests/31644/head

跳過評審,直接更新代碼

有時,可能僅僅做了一些微小的提交,例如改了代碼注釋中的錯別字,想要跳過代碼評審,應該如何操作呢?此時,可以使用 git push -o review=no命令來跳過創建代碼評審。命令的行為與未開啟推送評審模式時執行git push一致。需要注意的是,必須有相應分支的推送權限才可以使用review=no直接推送代碼。

一些其他的說明

更新評審需要是評審者或是評審的作者,否則更新會失敗。

remote: +---------------------------------------------------------------------+
remote: | The following tips are provided by Codeup:                          |
remote: +---------------------------------------------------------------------+
remote: | Merge request #31644 update failed.                                 |
remote: | You need to be the author or reviewer to update this merge request. |
remote: +---------------------------------------------------------------------+