設定和配置
獲取和建立專案
基本快照
分支與合併
共享和更新專案
檢查和比較
打補丁
除錯
電子郵件
外部系統
伺服器管理
指南
管理
底層命令
- 2.46.2 → 2.50.1 無變化
-
2.46.1
2024-09-13
-
2.46.0
2024-07-29
- 2.45.1 → 2.45.4 無更改
-
2.45.0
2024-04-29
- 2.44.1 → 2.44.4 無更改
-
2.44.0
2024-02-23
- 2.43.1 → 2.43.7 無更改
-
2.43.0
2023-11-20
- 2.41.1 → 2.42.4 無更改
-
2.41.0
2023-06-01
- 2.39.4 → 2.40.4 無更改
-
2.39.3
2023-04-17
- 2.36.1 → 2.39.2 無更改
-
2.36.0
2022-04-18
- 2.32.1 → 2.35.8 無更改
-
2.32.0
2021-06-06
- 2.30.2 → 2.31.8 無更改
-
2.30.1
2021-02-08
-
2.30.0
2020-12-27
- 2.29.1 → 2.29.3 無更改
-
2.29.0
2020-10-19
- 2.28.1 無更改
-
2.28.0
2020-07-27
- 2.27.1 無更改
-
2.27.0
2020-06-01
- 2.26.1 → 2.26.3 無更改
-
2.26.0
2020-03-22
- 2.24.1 → 2.25.5 無更改
-
2.24.0
2019-11-04
- 2.23.1 → 2.23.4 無更改
-
2.23.0
2019-08-16
- 2.22.1 → 2.22.5 無更改
-
2.22.0
2019-06-07
- 2.19.1 → 2.21.4 無更改
-
2.19.0
2018-09-10
- 2.18.1 → 2.18.5 無更改
-
2.18.0
2018-06-21
- 2.17.0 → 2.17.6 無更改
-
2.16.6
2019-12-06
-
2.15.4
2019-12-06
-
2.14.6
2019-12-06
-
2.13.7
2018-05-22
- 2.11.4 → 2.12.5 無變更
-
2.10.5
2017-09-22
-
2.9.5
2017-07-30
- 2.5.6 → 2.8.6 無更改
-
2.4.12
2017-05-05
- 2.3.10 無更改
-
2.2.3
2015-09-04
- 2.1.4 無更改
-
2.0.5
2014-12-17
描述
鉤子是您可以放置在 `hooks` 目錄中的程式,用於在 Git 執行的特定點觸發操作。未設定可執行位的鉤子將被忽略。
預設情況下,鉤子目錄是 $GIT_DIR/hooks
,但可以透過 core.hooksPath
配置變數進行更改(參見 git-config[1])。
在 Git 呼叫鉤子之前,它會將工作目錄更改為裸倉庫中的 $GIT_DIR,或非裸倉庫中工作樹的根目錄。推送期間觸發的鉤子(pre-receive、update、post-receive、post-update、push-to-checkout)是例外,它們始終在 $GIT_DIR 中執行。
環境變數,例如 GIT_DIR
、GIT_WORK_TREE
等,會被匯出,以便鉤子執行的 Git 命令能夠正確找到倉庫。如果您的鉤子需要在外部倉庫或同一倉庫的不同工作樹中呼叫 Git 命令,那麼它應該清除這些環境變數,以免它們干擾外部位置的 Git 操作。例如
local_desc=$(git describe) foreign_desc=$(unset $(git rev-parse --local-env-vars); git -C ../foreign-repo describe)
鉤子可以透過環境變數、命令列引數和標準輸入獲取其引數。有關詳細資訊,請參閱下面每個鉤子的文件。
git
init
可能會根據其配置將鉤子複製到新倉庫。有關詳細資訊,請參見 git-init[1] 中“模板目錄”部分。本文件其餘部分提及“預設鉤子”時,指的是 Git 隨附的預設模板。
當前支援的鉤子如下所述。
鉤子
applypatch-msg
此鉤子由 git-am[1] 呼叫。它接受一個引數,即包含建議的提交日誌訊息的檔名。以非零狀態退出會導致 git
am
在應用補丁之前中止。
鉤子允許就地編輯訊息檔案,可用於將訊息規範化為某些專案標準格式。它還可以在檢查訊息檔案後拒絕提交。
預設的 applypatch-msg 鉤子,在啟用時,如果 commit-msg 鉤子也啟用,則會執行它。
pre-applypatch
此鉤子由 git-am[1] 呼叫。它不接受引數,在補丁應用後但在提交之前呼叫。
如果它以非零狀態退出,則在應用補丁後工作樹將不會被提交。
它可用於檢查當前工作樹,並在未透過某些測試時拒絕提交。
預設的 pre-applypatch 鉤子,在啟用時,如果 pre-commit 鉤子也啟用,則會執行它。
pre-commit
此鉤子由 git-commit[1] 呼叫,可以透過 --no-verify
選項繞過。它不接受引數,並在獲取建議的提交日誌訊息和進行提交之前呼叫。從此指令碼以非零狀態退出會導致 git
commit
命令在建立提交之前中止。
預設的 pre-commit 鉤子,在啟用時,會捕獲引入帶有尾隨空格的行,並在找到此類行時中止提交。
如果命令不會彈出編輯器來修改提交訊息,則所有 git
commit
鉤子都會在環境變數 GIT_EDITOR=:
的情況下被呼叫。
預設的 pre-commit 鉤子,在啟用時——並且當 hooks.allownonascii
配置選項未設定或設定為 false 時——會阻止使用非 ASCII 檔名。
pre-merge-commit
此鉤子由 git-merge[1] 呼叫,可以透過 --no-verify
選項繞過。它不接受引數,並在合併成功執行後、獲取建議的提交日誌訊息以進行提交之前呼叫。從此指令碼以非零狀態退出會導致 git
merge
命令在建立提交之前中止。
預設的 pre-merge-commit 鉤子,在啟用時,如果 pre-commit 鉤子也啟用,則會執行它。
如果命令不會彈出編輯器來修改提交訊息,則此鉤子會在環境變數 GIT_EDITOR=:
的情況下被呼叫。
如果無法自動執行合併,則需要解決衝突並單獨提交結果(參見 git-merge[1])。此時,此鉤子將不會執行,但如果 pre-commit 鉤子已啟用,則會執行。
prepare-commit-msg
此鉤子由 git-commit[1] 呼叫,在準備好預設日誌訊息後、編輯器啟動前。
它接受一到三個引數。第一個是包含提交日誌訊息的檔名。第二個是提交訊息的來源,可以是:message
(如果給定了 -m
或 -F
選項);template
(如果給定了 -t
選項或設定了配置選項 commit.template
);merge
(如果提交是合併或存在 .git/MERGE_MSG
檔案);squash
(如果存在 .git/SQUASH_MSG
檔案);或者 commit
,後跟一個提交物件名稱(如果給定了 -c
、-C
或 --amend
選項)。
如果退出狀態為非零,git
commit
將中止。
此鉤子的目的是就地編輯訊息檔案,並且不會被 --no-verify
選項抑制。非零退出意味著鉤子失敗並中止提交。它不應作為 pre-commit 鉤子的替代品。
Git 附帶的示例 prepare-commit-msg
鉤子會刪除提交模板註釋部分中的幫助訊息。
commit-msg
此鉤子由 git-commit[1] 和 git-merge[1] 呼叫,可以透過 --no-verify
選項繞過。它接受一個引數,即包含建議的提交日誌訊息的檔名。以非零狀態退出會導致命令中止。
鉤子允許就地編輯訊息檔案,可用於將訊息規範化為某些專案標準格式。它還可以在檢查訊息檔案後拒絕提交。
預設的 commit-msg 鉤子,在啟用時,會檢測重複的 Signed-off-by
尾部資訊,如果發現則中止提交。
pre-rebase
此鉤子由 git-rebase[1] 呼叫,可用於阻止分支被變基。此鉤子可能帶有一個或兩個引數。第一個引數是系列所分叉的上游。第二個引數是被變基的分支,在變基當前分支時未設定。
post-checkout
在更新工作樹後執行 git-checkout[1] 或 git-switch[1] 時,會呼叫此鉤子。該鉤子會收到三個引數:前一個 HEAD 的引用、新 HEAD 的引用(可能已更改,也可能未更改),以及一個指示檢出是分支檢出(更改分支,flag=1)還是檔案檢出(從索引檢索檔案,flag=0)的標誌。除了鉤子的退出狀態會成為這兩個命令的退出狀態外,此鉤子不能影響 git
switch
或 git
checkout
的結果。
除非使用 --no-checkout
(-n
) 選項,否則它也會在 git-clone[1] 之後執行。傳遞給鉤子的第一個引數是 null-ref,第二個是新 HEAD 的引用,標誌始終為 1。對於 git
worktree
add
也是如此,除非使用 --no-checkout
。
此鉤子可用於執行倉庫有效性檢查、如果與前一個 HEAD 不同則自動顯示差異,或設定工作目錄元資料屬性。
post-merge
此鉤子由 git-merge[1] 呼叫,這發生在對本地倉庫執行 git
pull
時。此鉤子接受一個引數,一個狀態標誌,指定正在執行的合併是否是 squash 合併。此鉤子不能影響 git
merge
的結果,並且如果合併因衝突而失敗則不會執行。
此鉤子可以與相應的 pre-commit 鉤子結合使用,以儲存和恢復與工作樹相關的任何形式的元資料(例如:許可權/所有權、ACL 等)。有關如何執行此操作的示例,請參見 contrib/hooks/setgitperms.perl。
pre-push
此鉤子由 git-push[1] 呼叫,可用於阻止推送發生。此鉤子帶有兩個引數,提供目標遠端倉庫的名稱和位置;如果未使用命名遠端倉庫,則這兩個值將相同。
關於要推送什麼的資訊透過標準輸入提供給鉤子,格式如下:
<local-ref> SP <local-object-name> SP <remote-ref> SP <remote-object-name> LF
例如,如果執行命令 git
push
origin
master:foreign
,鉤子將收到如下一行:
refs/heads/master 67890 refs/heads/foreign 12345
儘管將提供完整的物件名稱。如果遠端引用尚不存在,<remote-object-name> 將是全零物件名稱。如果要刪除引用,<local-ref> 將作為 (delete
) 提供,並且 <local-object-name> 將是全零物件名稱。如果本地提交是由除可展開名稱(例如 HEAD~
或物件名稱)之外的其他內容指定的,它將按原始給定方式提供。
如果此鉤子以非零狀態退出,git
push
將中止,不推送任何內容。可以透過寫入標準錯誤將推送被拒絕的原因資訊傳送給使用者。
pre-receive
此鉤子由 git-receive-pack[1] 呼叫,當它響應 git
push
並更新其倉庫中的引用時。在開始更新遠端倉庫上的引用之前,會呼叫 pre-receive 鉤子。其退出狀態決定了更新的成功或失敗。
此鉤子在接收操作中執行一次。它不接受引數,但對於每個要更新的引用,它會透過標準輸入接收一行,格式如下:
<old-oid> SP <new-oid> SP <ref-name> LF
其中 <old-oid> 是引用中儲存的舊物件名稱,<new-oid> 是要儲存在引用中的新物件名稱,<ref-name> 是引用的完整名稱。建立新引用時,<old-oid> 是全零物件名稱。
如果鉤子以非零狀態退出,則不會更新任何引用。如果鉤子以零狀態退出,則單個引用的更新仍可由 update 鉤子阻止。
標準輸出和標準錯誤輸出都會轉發到另一端的 git
send-pack
,因此您可以簡單地 echo
訊息給使用者。
在 git
push
--push-option=...
命令列上給定的推送選項數量可以從環境變數 GIT_PUSH_OPTION_COUNT
中讀取,選項本身則在 GIT_PUSH_OPTION_0
、GIT_PUSH_OPTION_1
等變數中找到。如果協商後不使用推送選項階段,則不會設定環境變數。如果客戶端選擇使用推送選項但未傳輸任何選項,則計數變數將設定為零,即 GIT_PUSH_OPTION_COUNT=0
。
有關一些注意事項,請參見 git-receive-pack[1] 中“隔離環境”部分。
update
此鉤子由 git-receive-pack[1] 呼叫,當它響應 git
push
並更新其倉庫中的引用時。在更新遠端倉庫上的引用之前,會呼叫 update 鉤子。其退出狀態決定了引用更新的成功或失敗。
此鉤子為每個要更新的引用執行一次,並接受三個引數:
-
正在更新的引用的名稱,
-
引用中儲存的舊物件名稱,
-
以及要儲存在引用中的新物件名稱。
update 鉤子以零退出允許引用被更新。以非零狀態退出會阻止 git
receive-pack
更新該引用。
此鉤子可用於透過確保物件名稱是舊物件名稱所命名的提交物件的後代,來防止對某些引用進行強制更新。也就是說,強制執行“僅快進”策略。
它還可以用於記錄舊..新狀態。但是,它不知道分支的完整集合,因此如果簡單使用,最終會為每個引用傳送一封電子郵件。 post-receive 鉤子更適合此用途。
在一個僅透過網路限制使用者訪問 Git 命令的環境中,此鉤子可用於實現訪問控制,而無需依賴檔案系統所有權和組成員資格。有關如何使用登入 shell 將使用者訪問許可權限制為僅 Git 命令,請參見 git-shell[1]。
標準輸出和標準錯誤輸出都會轉發到另一端的 git
send-pack
,因此您可以簡單地 echo
訊息給使用者。
預設的 update 鉤子,在啟用時——並且當 hooks.allowunannotated
配置選項未設定或設定為 false 時——會阻止未加註釋的標籤被推送。
proc-receive
此鉤子由 git-receive-pack[1] 呼叫。如果伺服器設定了多值配置變數 receive.procReceiveRefs
,並且傳送到 receive-pack 的命令具有匹配的引用名稱,則這些命令將由此鉤子執行,而不是由內部的 execute_commands
() 函式執行。此鉤子負責更新相關引用並將結果報告回 receive-pack。
此鉤子在接收操作中執行一次。它不接受引數,但使用 pkt-line 格式協議與 receive-pack 通訊,以讀取命令、推送選項併發送結果。在下面的協議示例中,字母 S 代表 receive-pack,字母 H 代表此鉤子。
# Version and features negotiation. S: PKT-LINE(version=1\0push-options atomic...) S: flush-pkt H: PKT-LINE(version=1\0push-options...) H: flush-pkt
# Send commands from server to the hook. S: PKT-LINE(<old-oid> <new-oid> <ref>) S: ... ... S: flush-pkt # Send push-options only if the 'push-options' feature is enabled. S: PKT-LINE(push-option) S: ... ... S: flush-pkt
# Receive results from the hook. # OK, run this command successfully. H: PKT-LINE(ok <ref>) # NO, I reject it. H: PKT-LINE(ng <ref> <reason>) # Fall through, let 'receive-pack' execute it. H: PKT-LINE(ok <ref>) H: PKT-LINE(option fall-through) # OK, but has an alternate reference. The alternate reference name # and other status can be given in option directives. H: PKT-LINE(ok <ref>) H: PKT-LINE(option refname <refname>) H: PKT-LINE(option old-oid <old-oid>) H: PKT-LINE(option new-oid <new-oid>) H: PKT-LINE(option forced-update) H: ... ... H: flush-pkt
proc-receive 鉤子的每個命令都可以指向一個偽引用,並且其舊物件 ID 始終為零,而 proc-receive 鉤子可以更新一個備用引用,並且該備用引用可能已經存在且具有非零的舊物件 ID。對於這種情況,此鉤子將使用“option”指令來報告由開頭的“ok”指令給出的引用的擴充套件屬性。
此鉤子命令的報告應與輸入具有相同的順序。proc-receive 鉤子的退出狀態僅決定傳送給它的命令組的成功或失敗,除非使用了原子推送。
post-receive
此鉤子由 git-receive-pack[1] 呼叫,當它響應 git
push
並更新其倉庫中的引用時。此鉤子在遠端倉庫上執行一次,在所有建議的引用更新都處理完畢並且至少有一個引用作為結果被更新之後。
此鉤子不接受引數。它透過標準輸入接收成功更新的每個引用的一行,格式與 pre-receive 鉤子相同。
此鉤子不影響 git
receive-pack
的結果,因為它是在實際工作完成後呼叫的。
這取代了 post-update 鉤子,因為它除了獲取所有引用的名稱外,還能獲取它們的舊值和新值。
標準輸出和標準錯誤輸出都會轉發到另一端的 git
send-pack
,因此您可以簡單地 echo
訊息給使用者。
預設的 post-receive 鉤子是空的,但 Git 發行版中的 contrib/hooks
目錄提供了一個示例指令碼 post-receive-email
,它實現了傳送提交電子郵件的功能。
在 git
push
--push-option=...
命令列上給定的推送選項數量可以從環境變數 GIT_PUSH_OPTION_COUNT
中讀取,選項本身則在 GIT_PUSH_OPTION_0
、GIT_PUSH_OPTION_1
等變數中找到。如果協商後不使用推送選項階段,則不會設定環境變數。如果客戶端選擇使用推送選項但未傳輸任何選項,則計數變數將設定為零,即 GIT_PUSH_OPTION_COUNT=0
。
有關更多詳細資訊,請參見 git-receive-pack[1] 中的“post-receive”部分。
post-update
此鉤子由 git-receive-pack[1] 呼叫,當它響應 git
push
並更新其倉庫中的引用時。它在所有引用都更新後在遠端倉庫上執行一次。
它接受可變數量的引數,每個引數都是實際更新的引用的名稱。
此鉤子主要用於通知,不能影響 git
receive-pack
的結果。
post-update 鉤子可以識別哪些頭被推送,但它不知道它們的原始值和更新值,因此它不是記錄舊..新狀態的好地方。 post-receive 鉤子確實會獲取引用的原始值和更新值。如果您需要這些值,可以考慮使用它。
啟用時,預設的 post-update 鉤子會執行 git
update-server-info
以保持啞傳輸(例如 HTTP)使用的資訊最新。如果您正在釋出一個可透過 HTTP 訪問的 Git 倉庫,您應該啟用此鉤子。
標準輸出和標準錯誤輸出都會轉發到另一端的 git
send-pack
,因此您可以簡單地 echo
訊息給使用者。
reference-transaction
此鉤子由任何執行引用更新的 Git 命令呼叫。它在引用事務準備、提交或中止時執行,因此可能會被多次呼叫。此鉤子還支援符號引用更新。
此鉤子只接受一個引數,即給定引用事務的當前狀態:
-
“prepared”(準備):所有引用更新都已排隊到事務中,並且引用已在磁碟上鎖定。
-
“committed”(已提交):引用事務已提交,所有引用現在都具有各自的新值。
-
“aborted”(已中止):引用事務已中止,未執行任何更改,並且鎖已釋放。
對於新增到事務中的每個引用更新,鉤子會透過標準輸入接收一行,格式如下:
<old-value> SP <new-value> SP <ref-name> LF
其中 <old-value> 是傳遞給引用事務的舊物件名稱,<new-value> 是要儲存在引用中的新物件名稱,<ref-name> 是引用的完整名稱。當不顧其當前值強制更新引用或要重新建立引用時,<old-value> 是全零物件名稱。為了區分這些情況,您可以透過 git
rev-parse
檢查 <ref-name> 的當前值。
對於符號引用更新,<old_value> 和 <new-value> 欄位可以表示引用而不是物件。引用將以 ref: 字首表示,例如 ref:
<ref-target>。
鉤子的退出狀態除了“prepared”狀態外,在任何狀態下都會被忽略。在“prepared”狀態下,非零退出狀態將導致事務中止。在這種情況下,鉤子將不會以“aborted”狀態被呼叫。
push-to-checkout
此鉤子由 git-receive-pack[1] 呼叫,當它響應 git
push
並更新其倉庫中的引用時,以及當推送嘗試更新當前檢出的分支並且 receive.denyCurrentBranch
配置變數設定為 updateInstead
時。如果遠端倉庫的工作樹和索引與當前檢出的提交有任何不同,預設情況下會拒絕此類推送;當工作樹和索引都與當前提交匹配時,它們會更新以匹配新推送的分支尖端。此鉤子用於覆蓋預設行為。
此鉤子接收將用於更新當前分支尖端的提交。它可以透過非零狀態退出以拒絕推送(此時,它不得修改索引或工作樹)。或者,它可以在當前分支尖端更新為新提交時,對工作樹和索引進行任何必要的更改,使其達到所需狀態,並以零狀態退出。
例如,鉤子可以簡單地執行 git
read-tree
-u
-m
HEAD
"$1"
,以模擬以 git
push
反向執行的 git
fetch
,因為 git
read-tree
-u
-m
的雙樹形式本質上與 git
switch
或 git
checkout
相同,後者在切換分支的同時保留工作樹中不干擾分支之間差異的本地更改。
pre-auto-gc
此鉤子由 git
gc
--auto
呼叫(參見 git-gc[1])。它不接受引數,並且從此指令碼以非零狀態退出會導致 git
gc
--auto
中止。
post-rewrite
此鉤子由重寫提交的命令呼叫(當 git-commit[1] 使用 --amend
呼叫時,以及 git-rebase[1];然而,像 git-fast-import[1] 或 git-filter-repo 這樣的完整歷史(重)寫工具通常不會呼叫它!)。它的第一個引數表示呼叫它的命令:目前是 amend
或 rebase
之一。將來可能會傳遞更多依賴於命令的引數。
鉤子透過標準輸入接收重寫提交的列表,格式如下:
<old-object-name> SP <new-object-name> [ SP <extra-info> ] LF
extra-info 再次取決於命令。如果為空,則前面的空格也會被省略。目前,沒有命令傳遞任何 extra-info。
鉤子始終在自動註釋複製(參見 git-config[1] 中的“notes.rewrite.<command>”)發生後執行,因此可以訪問這些註釋。
以下命令特定的註釋適用:
sendemail-validate
此鉤子由 git-send-email[1] 呼叫。
它接受以下命令列引數。它們是:1. 包含要傳送電子郵件內容的檔案的名稱。2. 包含電子郵件 SMTP 頭的檔案的名稱。
SMTP 頭以與傳遞給使用者郵件傳輸代理 (MTA) 相同的方式傳遞。實際上,傳送給使用者 MTA 的電子郵件是 $2 的內容後跟 $1 的內容。
下面顯示了一些常見頭的示例。請注意大小寫和多行製表符結構。
From: Example <from@example.com> To: to@example.com Cc: cc@example.com, A <author@example.com>, One <one@example.com>, two@example.com Subject: PATCH-STRING
以非零狀態退出會導致 git
send-email
在傳送任何電子郵件之前中止。
執行鉤子時會設定以下環境變數。
例如,這些變數可用於驗證補丁系列。
Git 附帶的示例 sendemail-validate
鉤子會檢查所有已傳送的補丁(不包括封面信)是否可以在上游倉庫的預設分支上無衝突地應用。留下了一些佔位符,用於在給定系列的所有補丁應用後執行額外的驗證步驟。
fsmonitor-watchman
當配置選項 core.fsmonitor
根據要使用的鉤子版本設定為 .git/hooks/fsmonitor-watchman
或 .git/hooks/fsmonitor-watchmanv2
時,會呼叫此鉤子。
版本 1 接受兩個引數:版本號 (1) 和自 1970 年 1 月 1 日午夜以來的納秒級時間。
版本 2 接受兩個引數:版本號 (2) 和一個用於標識自該令牌以來更改的令牌。對於 watchman,這將是時鐘 ID。此版本必須在檔案列表之前將新令牌後跟一個 NUL 輸出到標準輸出。
鉤子應將工作目錄中自請求時間以來可能已更改的所有檔案列表輸出到標準輸出。邏輯應包含所有可能的變化,以免遺漏任何潛在更改。路徑應相對於工作目錄的根目錄,並以單個 NUL 分隔。
包含實際未更改的檔案是可以的。所有更改,包括新建和刪除的檔案,都應包含在內。當檔案重新命名時,舊名稱和新名稱都應包含在內。
Git 將根據給定的路徑名限制它檢查更改的檔案以及檢查未跟蹤檔案的目錄。
告訴 Git“所有檔案都已更改”的一種最佳化方法是返回檔名 /
。
退出狀態決定 Git 是否將使用鉤子資料來限制其搜尋。出錯時,它將回退到驗證所有檔案和資料夾。
p4-changelist
此鉤子由 git-p4
submit
呼叫。
p4-changelist
鉤子在使用者編輯完變更列表訊息後執行。可以透過 --no-verify
選項繞過它。它接受一個引數,即包含建議的變更列表文字的檔名。以非零狀態退出會導致命令中止。
鉤子允許編輯變更列表檔案,可用於將文字規範化為某些專案標準格式。它還可以在檢查訊息檔案後拒絕提交。
執行 git-p4
submit
--help
獲取詳細資訊。
p4-prepare-changelist
此鉤子由 git-p4
submit
呼叫。
p4-prepare-changelist
鉤子在準備好預設變更列表訊息後、編輯器啟動前執行。它接受一個引數,即包含變更列表文字的檔名。從此指令碼以非零狀態退出將中止程序。
此鉤子的目的是就地編輯訊息檔案,並且不會被 --no-verify
選項抑制。即使設定了 --prepare-p4-only
,也會呼叫此鉤子。
執行 git-p4
submit
--help
獲取詳細資訊。
p4-post-changelist
此鉤子由 git-p4
submit
呼叫。
p4-post-changelist
鉤子在 P4 中成功提交後呼叫。它不接受引數,主要用於通知,不能影響 git p4 提交操作的結果。
執行 git-p4
submit
--help
獲取詳細資訊。