亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

directory search
Guides gitattributes giteveryday gitglossary gitignore gitmodules gitrevisions gittutorial gitworkflows Administration git archive git bundle git clean git filter-branch git fsck git gc git instaweb git reflog Basic Snapshotting git add git commit git diff git mv git reset git rm git status Branching and Merging git branch git checkout git log git merge git mergetool git stash git tag Debugging git bisect git blame git grep Email git am git format-patch git request-pull git send-email External Systems git fast-import git svn Getting and Creating Projects git clone git init Git git annotate git archimport git bisect-lk2009 git check-attr git check-mailmap git check-ref-format git checkout-index git cherry git citool git column git credential git credential-cache git credential-store git cvsexportcommit git cvsimport git cvsserver git diff-files git diff-tree git difftool git fast-export git fetch-pack git fmt-merge-msg git get-tar-commit-id git gui git http-backend git http-fetch git http-push git imap-send git index-pack git interpret-trailers git ls-remote git ls-tree git mailinfo git mailsplit git merge-file git merge-index git merge-one-file git merge-tree git mktag git mktree git name-rev git notes git p4 git pack-objects git pack-redundant git pack-refs git parse-remote git patch-id git prune git prune-packed git quiltimport git receive-pack git remote-ext git remote-fd git remote-testgit git repack git replace git rerere git send-pack git sh-i18n git sh-setup git shell git show-branch git show-index git stripspace git unpack-file git unpack-objects git upload-archive git upload-pack git var git verify-commit git verify-tag git whatchanged git worktree Inspection and Comparison git describe git shortlog git show Miscellaneous api credentials api index gitcli gitcore tutorial gitcredentials gitcvs migration gitdiffcore githooks gitk gitnamespaces gitremote helpers gitrepository layout gitsubmodules gittutorial 2 gitweb gitweb.conf pack format User Manual Patching git apply git cherry-pick git rebase git revert Plumbing Commands git cat-file git check-ignore git commit-tree git count-objects git diff-index git for-each-ref git hash-object git ls-files git merge-base git read-tree git rev-list git rev-parse git show-ref git symbolic-ref git update-index git update-ref git verify-pack git write-tree Server Admin git daemon git update-server-info Setup and Config git git config git help Sharing and Updating Projects git fetch git pull git push git remote git submodule
characters

命名

githooks  -  Git 使用的掛鉤

概要

$GIT_DIR/hooks/* (or git config core.hooksPath/*)

描述

Hook 是你可以放在鉤子目錄中的程序,以觸發(fā) git 執(zhí)行中某些點(diǎn)的動(dòng)作。沒(méi)有可執(zhí)行位設(shè)置的 Hook 將被忽略。

默認(rèn)情況下,Hook 目錄是$GIT_DIR/hooks,但可以通過(guò)core.hooksPath配置變量來(lái)更改(參見(jiàn) git-config [1])。

在 Git 調(diào)用 hook 之前,它將其工作目錄更改為裸倉(cāng)庫(kù)中的 $ GIT_DIR 或非裸倉(cāng)庫(kù)中工作樹(shù)的根。一個(gè)例外是推(內(nèi)觸發(fā)掛鉤pre-receiveupdate,post-receivepost-update,push-to-checkout它們總是在 $ GIT_DIR 執(zhí)行)。

Hook 可以通過(guò)環(huán)境,命令行參數(shù)和 stdin 獲得它們的參數(shù)。有關(guān)詳細(xì)信息,請(qǐng)參閱下面每個(gè)掛鉤的文檔。

git init 可能會(huì)將鉤子復(fù)制到新的存儲(chǔ)庫(kù),具體取決于其配置。有關(guān)詳細(xì)信息,請(qǐng)參閱 git-init [1] 中的 “TEMPLATE DIRECTORY” 部分。當(dāng)本文檔的其余部分提到“default hooks”時(shí),它將討論 Git 附帶的默認(rèn)模板。

下面介紹當(dāng)前支持的 hook 。

Hooks

applypatch-msg

這個(gè) hook 被調(diào)用git am。它采用一個(gè)參數(shù),即包含提議的提交日志消息的文件的名稱(chēng)。以非零狀態(tài)退出導(dǎo)致git am在應(yīng)用修補(bǔ)程序之前中止。

允許 hook 編輯消息文件,并可用于將消息標(biāo)準(zhǔn)化為某種項(xiàng)目標(biāo)準(zhǔn)格式。在檢查消息文件之后,它也可以用來(lái)拒絕提交。

默認(rèn)applypatch-msg掛鉤在啟用時(shí)運(yùn)行commit-msg hook(如果后者已啟用)。

pre-applypatch

這個(gè) hook 被調(diào)用git am。它不接受任何參數(shù),并在應(yīng)用修補(bǔ)程序后調(diào)用,但在提交之前調(diào)用。

如果它以非零狀態(tài)退出,則在應(yīng)用修補(bǔ)程序后,工作樹(shù)不會(huì)被提交。

它可以用來(lái)檢查當(dāng)前的工作樹(shù),如果它沒(méi)有通過(guò)某些測(cè)試,就拒絕提交。

默認(rèn)pre-applypatch hook 在啟用時(shí)運(yùn)行pre-commit hook(如果后者已啟用)。

post-applypatch

這個(gè) hook 被調(diào)用git am。它不接受任何參數(shù),并在應(yīng)用修補(bǔ)程序并進(jìn)行提交后調(diào)用。

這個(gè) hook 主要是為了通知,并不能影響結(jié)果git am。

pre-commit

該 hook 由git commit--no-verify選項(xiàng)調(diào)用,并且可以繞過(guò)該選項(xiàng)。它不接受任何參數(shù),并在獲取建議的提交日志消息并進(jìn)行提交之前調(diào)用它。從該腳本中退出非零狀態(tài)會(huì)導(dǎo)致該git commit命令在創(chuàng)建提交之前中止。

默認(rèn)pre-commit hook 啟用后,會(huì)捕獲帶有尾隨空白的行的介紹,并在找到這樣的行時(shí)中止提交。

如果該命令不會(huì)git commit調(diào)用GIT_EDITOR=:編輯器來(lái)修改提交消息,則所有鉤子都將使用環(huán)境變量進(jìn)行調(diào)用。

prepare-commit-msg

git commit在編寫(xiě)默認(rèn)日志消息之后,在編輯器啟動(dòng)之前,該 hook 被調(diào)用。

它需要一到三個(gè)參數(shù)。第一個(gè)是包含提交日志消息的文件的名稱(chēng)。第二個(gè)是提交消息的來(lái)源,可以是:(message如果給出了a -m-F選項(xiàng)); template(如果-t給出選項(xiàng)或commit.template設(shè)置了配置選項(xiàng)); merge(如果提交是合并或.git/MERGE_MSG文件存在); squash(如果.git/SQUASH_MSG存在文件); 或者commit,后跟提交 SHA-1(如果是-c-C--amend給予選項(xiàng))。

如果退出狀態(tài)不為零,git commit則會(huì)中止。

Hook 的目的是編輯郵件文件,并且不會(huì)被該--no-verify選項(xiàng)抑制。非零的退出意味著掛鉤失敗并放棄提交。它不應(yīng)該被用作預(yù)提交 hook 的替換。

prepare-commit-msg Git 附帶的示例鉤子會(huì)注釋Conflicts:合并的提交消息的一部分。

commit-msg

該 hook 由git commit選項(xiàng)調(diào)用,并且可以繞過(guò)--no-verify選項(xiàng)。它采用一個(gè)參數(shù),即包含提議的提交日志消息的文件的名稱(chēng)。以非零狀態(tài)退出會(huì)導(dǎo)致git commit中止。

允許 hook 編輯消息文件,并可用于將消息標(biāo)準(zhǔn)化為某種項(xiàng)目標(biāo)準(zhǔn)格式。在檢查消息文件之后,它也可以用來(lái)拒絕提交。

默認(rèn)commit-msg hook 啟用時(shí)檢測(cè)到重復(fù)的 “Signed-off-by” 行,如果找到,則終止提交。

post-commit

這個(gè) hook 被git commit調(diào)用。它不接受任何參數(shù),并在提交完成后調(diào)用。

這個(gè) hook 主要是為了通知,并不能影響git commit的結(jié)果。

pre-rebase

此 hook 被調(diào)用git rebase并且可以用來(lái)防止分支得到重建。掛鉤可以用一個(gè)或兩個(gè)參數(shù)調(diào)用。第一個(gè)參數(shù)是系列分叉的上游。第二個(gè)參數(shù)是重新分支的分支,并在重新綁定當(dāng)前分支時(shí)未設(shè)置。

post-checkout

當(dāng)git checkout更新工作樹(shù)后運(yùn)行a時(shí)會(huì)調(diào)用此鉤子。這個(gè)鉤子有三個(gè)參數(shù):前一個(gè) HEAD 的 ref ,新 HEAD 的 ref(可能或者可能沒(méi)有改變)以及一個(gè)標(biāo)志,指示結(jié)帳是否是分支結(jié)賬(改變分支,標(biāo)志= 1)或者一個(gè)文件簽出(從索引中檢索一個(gè)文件,flag = 0)。這個(gè)鉤子不能影響結(jié)果git checkout。

它也在之后運(yùn)行git clone,除非使用 --no-checkout(-n)選項(xiàng)。給 hook 的第一個(gè)參數(shù)是 null-ref ,是新 HEAD 的 ref 的第二個(gè)參數(shù),并且該標(biāo)志始終為1。

該 hook 可用于執(zhí)行存儲(chǔ)庫(kù)有效性檢查,自動(dòng)顯示與以前 HEAD 不同的區(qū)別,或設(shè)置工作目錄元數(shù)據(jù)屬性。

post-merge

這個(gè) hook 被調(diào)用git merge,當(dāng)git pull在本地倉(cāng)庫(kù)上完成時(shí)發(fā)生。掛鉤采用一個(gè)參數(shù),一個(gè)狀態(tài)標(biāo)志指定是否合并完成是一個(gè)壁球合并。git merge如果合并因沖突而失敗,則此掛接不會(huì)影響結(jié)果并且不會(huì)執(zhí)行。

該 hook 可以與相應(yīng)的預(yù)提交鉤子結(jié)合使用,以保存和恢復(fù)任何形式的與工作樹(shù)關(guān)聯(lián)的元數(shù)據(jù)(例如:權(quán)限/所有權(quán),ACLS 等)。有關(guān)如何執(zhí)行此操作的示例,請(qǐng)參閱 contrib / hooks / setgitperms.perl 。

pre-push

這個(gè) hook 被調(diào)用git push,可以用來(lái)防止發(fā)生推送。該鉤子被調(diào)用時(shí)提供了兩個(gè)參數(shù),它們提供目標(biāo)遠(yuǎn)程的名稱(chēng)和位置,如果沒(méi)有使用一個(gè)命名的遠(yuǎn)程,那么這兩個(gè)值都是相同的。

有關(guān)要推送什么的信息通過(guò)以下格式的線條在 hook 的標(biāo)準(zhǔn)輸入上提供:

<local ref> SP <local sha1> SP <remote ref> SP <remote sha1> LF

例如,如果git push origin master:foreign運(yùn)行該命令, hook 將收到如下所示的行:

refs/heads/master 67890 refs/heads/foreign 12345

盡管將提供完整的40個(gè)字符的 SHA-1 。如果國(guó)外裁判不存在,<remote SHA-1>將是40 0。如果一個(gè)裁判將被刪除,<local ref>將提供作為(delete)<local SHA-1>將是40 0。如果本地提交是由可擴(kuò)展的名稱(chēng)以外的其他名稱(chēng)指定的(例如HEAD~,或 SHA-1 ),則它將按原來(lái)的形式提供。

如果此 hook 以非零狀態(tài)退出,git push將不中斷任何操作而中止。有關(guān)推送被拒絕的原因可通過(guò)寫(xiě)入標(biāo)準(zhǔn)錯(cuò)誤發(fā)送給用戶。

pre-receive

這個(gè) hook 是git-receive-pack在遠(yuǎn)程倉(cāng)庫(kù)上調(diào)用的,當(dāng)git push在本地倉(cāng)庫(kù)上完成時(shí)會(huì)發(fā)生這種情況。在開(kāi)始更新遠(yuǎn)程倉(cāng)庫(kù)中的 refs 之前,調(diào)用預(yù)接收 hook 。其退出狀態(tài)決定了更新的成敗。

該 hook 為接收操作執(zhí)行一次。它不需要任何參數(shù),但是對(duì)于每個(gè)要更新的引用,它都會(huì)在標(biāo)準(zhǔn)輸入中接收格式的一行:

<old-value> SP <new-value> SP <ref-name> LF

<old-value> ref 中存儲(chǔ)的舊對(duì)象名稱(chēng)是在 ref 中存儲(chǔ)<new-value>的新對(duì)象名稱(chēng),并且<ref-name>是 ref 的全名。當(dāng)創(chuàng)建一個(gè)新的參考,<old-value>是40 0

如果 hook 以非零狀態(tài)退出,則沒(méi)有任何參數(shù)會(huì)被更新。如果鉤子具有零退出,從個(gè)人參更新仍可以通過(guò)防止更新鉤。

標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤輸出都被轉(zhuǎn)發(fā)到git send-pack另一端,因此您可以簡(jiǎn)單地echo向用戶發(fā)送消息。

命令行定推送選項(xiàng)的數(shù)量git push --push-option=...可以從環(huán)境變量中讀取GIT_PUSH_OPTION_COUNT本身中找到的選項(xiàng),并且GIT_PUSH_OPTION_0,GIT_PUSH_OPTION_1......如果協(xié)商不使用推送選項(xiàng)階段,環(huán)境變量將不會(huì)被設(shè)置。如果客戶選擇使用推送選項(xiàng),但不傳送任何數(shù)據(jù),則計(jì)數(shù)變量將被設(shè)置為零GIT_PUSH_OPTION_COUNT=0

有關(guān)注意事項(xiàng),請(qǐng)參閱 git-receive-pack [1] 中的“隔離環(huán)境”部分。

update

這個(gè) hook 是git-receive-pack在遠(yuǎn)程倉(cāng)庫(kù)上調(diào)用的,當(dāng)git push在本地倉(cāng)庫(kù)上完成時(shí)會(huì)發(fā)生這種情況。在更新遠(yuǎn)程存儲(chǔ)庫(kù)中的 ref 之前,會(huì)調(diào)用更新掛鉤。它的退出狀態(tài)決定了 ref 更新的成敗。

該 hook 為每個(gè)要更新的引用執(zhí)行一次,并且需要三個(gè)參數(shù):

  • 正在更新的參考名稱(chēng),

  • 舊的對(duì)象名稱(chēng)存儲(chǔ)在 ref 中,

  • 并將新的對(duì)象名稱(chēng)存儲(chǔ)在 ref 中。

從更新掛鉤零退出允許 ref 被更新。以非零狀態(tài)退出可防止git-receive-pack更新該引用。

forced通過(guò)確保對(duì)象名稱(chēng)是一個(gè)提交對(duì)象,該對(duì)象是舊對(duì)象名稱(chēng)所指定的提交對(duì)象的后代,該 hook 可用于防止更新某些引用。也就是說(shuō),強(qiáng)制執(zhí)行“僅快進(jìn)”策略。

它也可以用來(lái)記錄舊的......新?tīng)顟B(tài)。但是,它并不知道整套分支,所以最終會(huì)在天真地使用時(shí)為每個(gè)參考文獻(xiàn)發(fā)送一封電子郵件。在后收到鉤更適合一點(diǎn)。

在一個(gè)限制用戶僅通過(guò)線路訪問(wèn) git 命令的環(huán)境中,該 hook 可用于實(shí)現(xiàn)訪問(wèn)控制,而不依賴(lài)文件系統(tǒng)所有權(quán)和組成員身份。有關(guān)如何使用登錄 shell 來(lái)限制用戶對(duì) git 命令的訪問(wèn),請(qǐng)參閱 git-shell [1]。

標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤輸出都被轉(zhuǎn)發(fā)到git send-pack另一端,因此您可以簡(jiǎn)單地echo向用戶發(fā)送消息。

默認(rèn)update hook hooks.allowunannotated啟用時(shí)(且配置選項(xiàng)未設(shè)置或設(shè)置為false)可防止未注釋的標(biāo)簽被推送。

post-receive

這個(gè) hook 是git-receive-pack在遠(yuǎn)程倉(cāng)庫(kù)上調(diào)用的,當(dāng)git push在本地倉(cāng)庫(kù)上完成時(shí)會(huì)發(fā)生這種情況。它在更新所有 ref 后立即在遠(yuǎn)程存儲(chǔ)庫(kù)上執(zhí)行。

該 hook 為接收操作執(zhí)行一次。它不需要任何參數(shù),但會(huì)獲得與預(yù)接收鉤子在其標(biāo)準(zhǔn)輸入上相同的信息。

這個(gè) hook 并不影響結(jié)果git-receive-pack,因?yàn)樗窃谡嬲墓ぷ魍瓿珊笳{(diào)用的。

這取代了更新后的 hook ,它除了獲得所有參考名稱(chēng)之外,還獲得了所有參考的新舊值。

標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤輸出都被轉(zhuǎn)發(fā)到git send-pack另一端,因此您可以簡(jiǎn)單地echo向用戶發(fā)送消息。

默認(rèn)post-receive hook 為空,但在 Git 分配post-receive-emailcontrib/hooks目錄中提供了一個(gè)示例腳本,該腳本實(shí)現(xiàn)了發(fā)送提交郵件。

命令行定推送選項(xiàng)的數(shù)量git push --push-option=...可以從環(huán)境變量中讀取GIT_PUSH_OPTION_COUNT本身中找到的選項(xiàng),并且GIT_PUSH_OPTION_0,GIT_PUSH_OPTION_1......如果協(xié)商不使用推送選項(xiàng)階段,環(huán)境變量將不會(huì)被設(shè)置。如果客戶選擇使用推送選項(xiàng),但不傳送任何數(shù)據(jù),則計(jì)數(shù)變量將被設(shè)置為零GIT_PUSH_OPTION_COUNT=0

post-update

這個(gè) hook 是git-receive-pack在遠(yuǎn)程倉(cāng)庫(kù)上調(diào)用的,當(dāng)git push在本地倉(cāng)庫(kù)上完成時(shí)會(huì)發(fā)生這種情況。它在更新所有 ref 后立即在遠(yuǎn)程存儲(chǔ)庫(kù)上執(zhí)行。

它需要可變數(shù)量的參數(shù),每個(gè)參數(shù)都是實(shí)際更新的 ref 的名稱(chēng)。

這個(gè) hook 主要是為了通知,并不能影響結(jié)果git-receive-pack

post-update能告訴什么是推送的頭,但它不知道他們?cè)瓉?lái)的和更新的值,所以它是做記錄 old..new 一個(gè)窮地方。在后收到 hook 并得到裁判的原件和更新的值。如果你需要它們,你可以考慮它。

啟用后,默認(rèn)post-update將運(yùn)行git update-server-info以保持傳輸(例如,HTTP)使用的信息最新。如果您正在發(fā)布可通過(guò)HTTP訪問(wèn)的Git存儲(chǔ)庫(kù),則應(yīng)該啟用此掛接。

標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤輸出都被轉(zhuǎn)發(fā)到git send-pack另一端,因此您可以簡(jiǎn)單地echo向用戶發(fā)送消息。

push-to-checkout

該鉤子由git-receive-pack遠(yuǎn)程存儲(chǔ)庫(kù)調(diào)用git push,當(dāng)在本地存儲(chǔ)庫(kù)上完成a操作時(shí),當(dāng)推送嘗試更新當(dāng)前檢出的分支并將receive.denyCurrentBranch配置變量設(shè)置為updateInstead。如果遠(yuǎn)程存儲(chǔ)庫(kù)的工作樹(shù)和索引與當(dāng)前檢出的提交有任何不同,則默認(rèn)情況下會(huì)拒絕這種推送; 當(dāng)工作樹(shù)和索引都與當(dāng)前提交匹配時(shí),它們會(huì)更新以匹配分支的新推入的提示。該鉤子將用于覆蓋默認(rèn)行為。

鉤子接收當(dāng)前分支的尖端將被更新的提交。它可以以非零狀態(tài)退出以拒絕推送(當(dāng)它這樣做時(shí),它不能修改索引或工作樹(shù))?;蛘?,它可以對(duì)工作樹(shù)和索引進(jìn)行任何必要的更改,以在當(dāng)前分支的提示更新為新提交時(shí)將其帶到期望的狀態(tài),并以零狀態(tài)退出。

例如,鉤子可以簡(jiǎn)單地運(yùn)行git read-tree -u -m HEAD "$1",以模擬git fetch與反向運(yùn)行的鉤子git push,因?yàn)殡p樹(shù)形式read-tree -u -m基本上與git checkout開(kāi)關(guān)分支相同,同時(shí)保持工作樹(shù)中不會(huì)干擾的局部變化分支之間的差異。

pre-auto-gc

這個(gè)鉤子被調(diào)用git gc --auto。它不接受任何參數(shù),并從此腳本中git gc --auto以非零狀態(tài)退出導(dǎo)致中止。

post-rewrite

這個(gè)鉤子被重寫(xiě)提交的命令調(diào)用(git commit --amend,git-rebase;目前git-filter-branch確實(shí)not叫它?。?。它的第一個(gè)參數(shù)表示它被調(diào)用的命令:當(dāng)前是amendor的一個(gè)rebase。更多的依賴(lài)于命令的參數(shù)可能會(huì)在未來(lái)傳遞。

該鉤子以格式接收stdin上重寫(xiě)的提交列表

<old-sha1> SP <new-sha1> [ SP <extra-info> ] LF

這又extra-info是依賴(lài)于命令的。如果它是空的,則前面的SP也被省略。目前,沒(méi)有命令通過(guò)任何extra-info

鉤子總是在自動(dòng)音符復(fù)制之后運(yùn)行(請(qǐng)參閱git-config [1]中的“notes.rewrite。<command>”),因此可以訪問(wèn)這些音符。

以下特定于命令的注釋適用于:

rebase

對(duì)于squashfixup操作,被壓扁,所有提交被列為被改寫(xiě)成壓扁的承諾。這意味著將會(huì)有幾條線路共享相同的信息new-sha1

提交將保證按照他們通過(guò)rebase處理的順序列出。

sendemail-validate

這個(gè)鉤子被調(diào)用git send-email。它需要一個(gè)參數(shù),即保存要發(fā)送的電子郵件的文件的名稱(chēng)。以非零狀態(tài)退出導(dǎo)致git send-email在發(fā)送任何電子郵件之前中止。

Previous article: Next article: