国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
鑰匙要點(diǎn)
prepary-commit-msg - 如果沒(méi)有給出一個(gè)默認(rèn)提交消息。
創(chuàng)建一個(gè)git鉤,導(dǎo)航到存儲(chǔ)庫(kù)中的.git/hooks目錄。在這裡,您會(huì)找到各種掛鉤的示例腳本。要?jiǎng)?chuàng)建一個(gè)新的鉤子,請(qǐng)創(chuàng)建一個(gè)沒(méi)有任何擴(kuò)展名的文件(例如,預(yù)先命中),使其可執(zhí)行,並編寫您的腳本。
>如何使用git掛鉤進(jìn)行自動(dòng)化?
我可以與我的團(tuán)隊(duì)共享git鉤嗎?
我如何使用git掛鉤執(zhí)行政策? >
我可以用來(lái)寫git鉤嗎?
>

git鉤介紹

Feb 21, 2025 am 08:58 AM

An Introduction to Git Hooks

git鉤介紹

鑰匙要點(diǎn)

  • git掛鉤是在某些操作之前或之後運(yùn)行的簡(jiǎn)單腳本,例如對(duì)文件的測(cè)試語(yǔ)法進(jìn)行測(cè)試語(yǔ)法,並且可以用環(huán)境可以使用的任何語(yǔ)言編寫。
  • 存在兩種類型的掛鉤:在開發(fā)人員的系統(tǒng)上運(yùn)行的客戶端,以及在託管Git存儲(chǔ)庫(kù)的服務(wù)器上運(yùn)行的服務(wù)器端。
  • > git掛鉤不是與您的項(xiàng)目分配的,也不能自動(dòng)安裝它們,因此為您的鉤子創(chuàng)建一個(gè)生活並告訴您的合作者使用它們是有益的。 >>>>>>
  • > git鉤是自動(dòng)化項(xiàng)目工作流程,使您能夠驗(yàn)證代碼,提交消息,確保環(huán)境適當(dāng)以及更多的強(qiáng)大手段。
  • >
  • git鉤是在某些操作之前或之後運(yùn)行的簡(jiǎn)單腳本。它們對(duì)於各種任務(wù)很有用,但是我主要發(fā)現(xiàn)它們對(duì)於客戶端驗(yàn)證有用,因此可以防止簡(jiǎn)單的錯(cuò)誤。例如,您可以在要投入的文件上測(cè)試語(yǔ)法,甚至可以運(yùn)行測(cè)試。我寫的鉤子可以驗(yàn)證樹枝語(yǔ)法,將jshint運(yùn)行到標(biāo)準(zhǔn)等等。
  • > 通過(guò)設(shè)計(jì),Git鉤子也非常簡(jiǎn)單。如果腳本是可執(zhí)行的,則Git將運(yùn)行這些掛鉤,並且GIT將允許操作(例如,提交或推動(dòng))只要掛鉤退出而沒(méi)有錯(cuò)誤(狀態(tài)0)。掛鉤可以用環(huán)境可以使用的任何語(yǔ)言編寫。
>

有兩種類型的鉤子:

>客戶端 - 這些在開發(fā)人員的系統(tǒng)上運(yùn)行

>服務(wù)器端 - 這些運(yùn)行在託管Git存儲(chǔ)庫(kù)的服務(wù)器上

    本文將不介紹
  • >服務(wù)器端鉤子。但是,請(qǐng)注意,如果您的項(xiàng)目在GitHub之類的服務(wù)上,則服務(wù)器端掛鉤通常不適用。在GitHub上,相當(dāng)於服務(wù)器端掛鉤的是使用服務(wù)和Webhooks,可以在您的項(xiàng)目設(shè)置中找到。
  • >
  • 鉤文件
>默認(rèn)情況下的每個(gè)存儲(chǔ)庫(kù)(包括您克隆的存儲(chǔ)庫(kù))都會(huì)在.git/hooks目錄中具有示例掛鉤:>

在該目錄中,您會(huì)看到類似的內(nèi)容:

>我們將重點(diǎn)關(guān)注在允許提交之前運(yùn)行的前簽名掛鉤。

示例鉤子:驗(yàn)證PHP語(yǔ)法
<span>git clone git@github.com:symfony/symfony.git
</span><span>cd symfony
</span><span>ls .git/hooks</span>

>我們將以一個(gè)非常簡(jiǎn)單的掛鉤開始,用bash編寫,該掛鉤驗(yàn)證所犯下的php代碼具有有效的語(yǔ)法。這是為了防止“快速”但破裂的提交發(fā)生。當(dāng)然,我勸阻幾乎沒(méi)有測(cè)試的“簡(jiǎn)單提交”,但這並不意味著它們不會(huì)發(fā)生。

>
applypatch-msg.sample
commit-msg.sample
post-update.sample
pre-applypatch.sample
pre-commit
pre-commit.sample
prepare-commit-msg.sample
pre-push.sample
pre-rebase.sample
update.sample
in .git/hooks我們可以啟動(dòng)一個(gè)名為Pre-Commit的新文件。它必須具有執(zhí)行權(quán)限:

>

<span>git clone git@github.com:symfony/symfony.git
</span><span>cd symfony
</span><span>ls .git/hooks</span>

>您可以使用自己喜歡的編輯器開始寫作。首先,我們需要Shebang。我最喜歡的方法是使用/usr/bin/env,因?yàn)檫@使用了我們想要的應(yīng)用程序的正確路徑,而不是硬編碼且可能是無(wú)效的路徑。目前,我們將不斷失敗,以便我們可以輕鬆測(cè)試。

>
applypatch-msg.sample
commit-msg.sample
post-update.sample
pre-applypatch.sample
pre-commit
pre-commit.sample
prepare-commit-msg.sample
pre-push.sample
pre-rebase.sample
update.sample
PHP具有語(yǔ)法驗(yàn)證的有用選項(xiàng):-l。它需要一個(gè)文件參數(shù),因此我們將不得不循環(huán)瀏覽正在更改的任何PHP文件。為簡(jiǎn)單起見,我們將假設(shè)任何投入的PHP文件始終以.php結(jié)尾。由於掛鉤是從存儲(chǔ)庫(kù)的根部運(yùn)行的,因此我們可以使用標(biāo)準(zhǔn)GIT命令獲取有關(guān)更改的信息,例如GIT狀態(tài)。

#Always Fail Line上方,我們可以使用以下內(nèi)容來(lái)修改所有PHP文件:>

>說(shuō)明:

<span>cd .git/hooks
</span><span>touch pre-commit
</span><span>chmod +x pre-commit</span>

> php_files =在沒(méi)有定界符的情況下完成bash分配,但請(qǐng)注意,引用變量需要$ deLimiter

    $()是“獲取輸出”的語(yǔ)法。不需要引用它。
  • >
  • grep被用於檢查添加(a)和修改文件(m)
  • >
  • >尷尬在這裡用於打印$ 2。完整的git狀態(tài) - 剛開始時(shí)有額外的空間和額外的數(shù)據(jù),因此我們要?jiǎng)h除它。尷尬還可以自動(dòng)剝離。
  • grep再次被使用,但現(xiàn)在正在檢查以確保行以.php
  • 結(jié)束
  • 現(xiàn)在,我們可以用for循環(huán)驗(yàn)證每個(gè)文件:

這似乎有些奇怪,但是! php -l“ $ i”(請(qǐng)注意避免空間問(wèn)題的引號(hào))實(shí)際上是在檢查0的返回值為0,而不是true或我們通常在其他語(yǔ)言中期望的任何值。僅供參考,大約等效的PHP代碼將是:>

<span>#!/usr/bin/env bash
</span><span># Hook that checks PHP syntax
</span>
<span># Override IFS so that spaces do not count as delimiters
</span><span>old_ifs=$IFS
</span><span><span>IFS</span>=$'<span title="\n">\n'</span>
</span>
<span># Always fail
</span><span>exit 1</span>
我對(duì)SRC/SYMFONY/COMPONEN/FINDER/GLOB.PHP進(jìn)行了錯(cuò)誤的更改,目的是測(cè)試此問(wèn)題,而Git Commit -M'test'的輸出就像:

>我使循環(huán)儘早退出了整個(gè)腳本,最終可能不是我們想要的。實(shí)際上,我們可能希望摘要要解決的問(wèn)題,而不是必須繼續(xù)嘗試進(jìn)行。任何人最終都會(huì)很容易感到沮喪,甚至可能學(xué)會(huì)使用git commits-不 - 驗(yàn)證以完全繞過(guò)鉤子。
<span>php_files=<span>$(git status --short | grep -E '^(A|M)' | awk '{ print  }' | grep -E '\.php$')</span></span>
>

因此,我們不要以php -L的錯(cuò)誤退出,但我仍然想保持易於閱讀的內(nèi)容:>

在這裡,我們捕獲了PHP -L的輸出(以及對(duì)標(biāo)準(zhǔn)輸出的強(qiáng)制標(biāo)準(zhǔn)錯(cuò)誤輸出)。我們使用特殊變量$檢查PHP -L的退出狀態(tài)? (這是退出狀態(tài)代碼)和操作員-EQ。我們聲明發(fā)生了語(yǔ)法錯(cuò)誤(注意字符串中變量的$ {}的使用)。最後,我們給出了相關(guān)的錯(cuò)誤行,以使輸出更短一點(diǎn)(greppping for'^parse錯(cuò)誤'),我們給出了一條空白,以使其更可讀。

>我進(jìn)行了兩個(gè)不良修改,並嘗試進(jìn)行提交的嘗試看起來(lái)像這樣:>

<span>git clone git@github.com:symfony/symfony.git
</span><span>cd symfony
</span><span>ls .git/hooks</span>
現(xiàn)在的行動(dòng)是解決這些問(wèn)題,測(cè)試並嘗試再次提交。

要完成鉤子腳本,請(qǐng)?jiān)谀_本底部刪除1個(gè)出口1。嘗試提交有效的PHP文件,並且應(yīng)該按正常工作。

共享鉤子

鉤子未與您的項(xiàng)目分發(fā),也不能自動(dòng)安裝它們。因此,您最好的行動(dòng)是為您創(chuàng)建一個(gè)鉤子居住的地方(可能位於同一存儲(chǔ)庫(kù)中),並告訴您的合作者使用它們。如果您對(duì)他們來(lái)說(shuō)很容易,那麼他們更有可能這樣做。

>

>做到這一點(diǎn)的一種簡(jiǎn)單方法是創(chuàng)建一個(gè)掛鉤目錄和一個(gè)簡(jiǎn)單的安裝程序install-hooks.sh鏈接它們(而不是複制):

任何克隆您的項(xiàng)目的任何人都可以簡(jiǎn)單地運(yùn)行bash install-hooks.sh克隆後。

>
applypatch-msg.sample
commit-msg.sample
post-update.sample
pre-applypatch.sample
pre-commit
pre-commit.sample
prepare-commit-msg.sample
pre-push.sample
pre-rebase.sample
update.sample
這也具有將鉤子保持在版本控制下的好處。

>

其他鉤子

prepary-commit-msg - 如果沒(méi)有給出一個(gè)默認(rèn)提交消息。

>
    commit-msg - 提交消息驗(yàn)證。
  • >後委員會(huì) - 在成功的提交後運(yùn)行。
  • 預(yù)算 - 在驗(yàn)證遙控器後的GIT推動(dòng)之前運(yùn)行。它需要2個(gè)參數(shù):遙控器的名稱,以及它的URL。
  • >
  • > reperbase - 在git rebase之前運(yùn)行。
  • >後簽名 - 成功結(jié)帳後運(yùn)行。
  • >後合併 - 成功合併後運(yùn)行。
  • 這些鉤子通常與預(yù)先投入的鉤子相同,儘管它們會(huì)參與爭(zhēng)論。檢查後的一個(gè)用例是確保文件始終獲得適當(dāng)?shù)臋?quán)限(因?yàn)镚IT僅跟蹤可執(zhí)行文件,而不是可執(zhí)行的和符號(hào)鏈接):>>>>>
>對(duì)於commit-msg,您可能需要確保所有提交消息符合標(biāo)準(zhǔn),例如

[subproject] message 。這是php中的一個(gè):

<span>cd .git/hooks
</span><span>touch pre-commit
</span><span>chmod +x pre-commit</span>

結(jié)論 git鉤是自動(dòng)化項(xiàng)目工作流程的強(qiáng)大手段。您可以驗(yàn)證代碼,提交消息,確保環(huán)境正確,還有很多。您使用Git鉤子有什麼有趣的東西嗎?在評(píng)論中讓我們知道!

>
<span>#!/usr/bin/env bash
</span><span># Hook that checks PHP syntax
</span>
<span># Override IFS so that spaces do not count as delimiters
</span><span>old_ifs=$IFS
</span><span><span>IFS</span>=$'<span title="\n">\n'</span>
</span>
<span># Always fail
</span><span>exit 1</span>
經(jīng)常詢問(wèn)有關(guān)git鉤的問(wèn)題(常見問(wèn)題解答)

git掛鉤的不同類型是什麼?客戶端鉤子是由諸如投入和合併之類的操作觸發(fā)的,而服務(wù)器端掛鉤在網(wǎng)絡(luò)操作上運(yùn)行,例如接收推動(dòng)提交??梢宰远x每個(gè)鉤子以滿足您的特定操作需求。

如何創(chuàng)建一個(gè)git掛鉤?

創(chuàng)建一個(gè)git鉤,導(dǎo)航到存儲(chǔ)庫(kù)中的.git/hooks目錄。在這裡,您會(huì)找到各種掛鉤的示例腳本。要?jiǎng)?chuàng)建一個(gè)新的鉤子,請(qǐng)創(chuàng)建一個(gè)沒(méi)有任何擴(kuò)展名的文件(例如,預(yù)先命中),使其可執(zhí)行,並編寫您的腳本。

>如何使用git掛鉤進(jìn)行自動(dòng)化?

> git鉤可用於自動(dòng)化開發(fā)工作流中的各種任務(wù)。例如,您可以在每個(gè)提交之前使用預(yù)製掛鉤自動(dòng)運(yùn)行測(cè)試或代碼上的襯裡。這樣可以確保僅測(cè)試和正確格式的代碼才能將其投入到存儲(chǔ)庫(kù)中。

我可以與我的團(tuán)隊(duì)共享git鉤嗎?

默認(rèn)情況下,當(dāng)您克隆一個(gè)存儲(chǔ)庫(kù)時(shí),不包括git掛鉤。這是因?yàn)樗鼈兇鎯?chǔ)在.git目錄中,該目錄未版本化。但是,您可以通過(guò)將它們存儲(chǔ)在項(xiàng)目中的單獨(dú)目錄中,並創(chuàng)建一個(gè)腳本以將它們鏈接到.git/hooks中。

>

我如何使用git掛鉤執(zhí)行政策? >

> git掛鉤可用於執(zhí)行項(xiàng)目或公司政策。例如,您可以在服務(wù)器端使用接收前的鉤子來(lái)拒絕任何不符合您策略的推動(dòng)(例如,提交不遵循某種格式的提交)。

>

我可以用來(lái)寫git鉤嗎?

git掛鉤是腳本,因此您可以用任何腳本語(yǔ)言編寫它們。默認(rèn)樣本是用bash編寫的,但是您可以使用任何您喜歡的語(yǔ)言,例如Python或Ruby。 GIT鉤可用於將Git與其他工具集成在一起。例如,您可以使用郵票後鉤子在連續(xù)集成服務(wù)器中觸發(fā)構(gòu)建或在您的問(wèn)題跟蹤系統(tǒng)中更新票證。

>

如何調(diào)試git鉤?調(diào)試git掛鉤可以通過(guò)將信息寫入掛鉤腳本的文件來(lái)完成。例如,您可以將命令的輸出重定向到日誌文件以稍後進(jìn)行檢查。

>我可以忽略git鉤嗎?提交,您可以將–No-Verify選項(xiàng)與Git Commit命令一起使用。當(dāng)您進(jìn)行不需要鉤子中實(shí)現(xiàn)的支票的次要更改時(shí),這可能很有用。

>

強(qiáng)大,應(yīng)謹(jǐn)慎使用它們。書面不好的鉤子可能會(huì)導(dǎo)致問(wèn)題,包括拒絕所有提交甚至數(shù)據(jù)丟失。部署之前,請(qǐng)務(wù)必徹底測(cè)試您的鉤子。

以上是git鉤介紹的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

開發(fā)人員的快捷方式到您的Udemy樣平臺(tái) 開發(fā)人員的快捷方式到您的Udemy樣平臺(tái) Jun 17, 2025 pm 04:43 PM

在開發(fā)類似於Udemy的學(xué)習(xí)平臺(tái)時(shí),重點(diǎn)不僅僅是內(nèi)容質(zhì)量。同樣重要的是如何交付內(nèi)容。這是因?yàn)楝F(xiàn)代教育平臺(tái)依賴於媒體,快速且易於消化。

用於購(gòu)買SSL證書的經(jīng)濟(jì)有效的轉(zhuǎn)售商平臺(tái) 用於購(gòu)買SSL證書的經(jīng)濟(jì)有效的轉(zhuǎn)售商平臺(tái) Jun 25, 2025 am 08:28 AM

在一個(gè)在線信任不可談判的世界中,SSL證書對(duì)於每個(gè)網(wǎng)站都至關(guān)重要。 SSL認(rèn)證的市場(chǎng)規(guī)模在2024年價(jià)值56億美元,並且由於電子商務(wù)業(yè)務(wù)的激增而推動(dòng)了強(qiáng)勁的增長(zhǎng)

SaaS的5個(gè)最佳支付門戶:您的最終指南 SaaS的5個(gè)最佳支付門戶:您的最終指南 Jun 29, 2025 am 08:28 AM

付款網(wǎng)關(guān)是付款過(guò)程的關(guān)鍵組成部分,使企業(yè)能夠在線接受付款。它充當(dāng)客戶與商人之間的橋樑,安全地傳輸付款信息並促進(jìn)交易。 為了

由於新的Microsoft AI型號(hào) 由於新的Microsoft AI型號(hào) Jul 05, 2025 am 12:44 AM

一種新的人工智能(AI)模型已經(jīng)證明了比幾個(gè)使用最廣泛使用的全球預(yù)測(cè)系統(tǒng)更快,更精確地預(yù)測(cè)重大天氣事件的能力。該名為Aurora的模型已接受過(guò)培訓(xùn)。

新研究聲稱AI比我們更好地'理解”情緒。特別是在情感上充滿電的情況下 新研究聲稱AI比我們更好地'理解”情緒。特別是在情感上充滿電的情況下 Jul 03, 2025 pm 05:48 PM

在我們認(rèn)為人類始終超越機(jī)器的領(lǐng)域的另一個(gè)挫折中,研究人員現(xiàn)在建議AI比我們更好地理解情感。研究人員發(fā)現(xiàn)人工智能證明了一個(gè)

您的設(shè)備餵養(yǎng)AI助手並收集個(gè)人數(shù)據(jù),即使他們睡著了。這是如何知道您分享的內(nèi)容。 您的設(shè)備餵養(yǎng)AI助手並收集個(gè)人數(shù)據(jù),即使他們睡著了。這是如何知道您分享的內(nèi)容。 Jul 05, 2025 am 01:12 AM

不管喜歡與否,人工智能已成為日常生活的一部分。許多設(shè)備(包括電動(dòng)剃須刀和牙刷)已成為AI驅(qū)動(dòng)的“使用機(jī)器學(xué)習(xí)算法來(lái)跟蹤一個(gè)人的使用方式,Devi的方式

高級(jí)AI型號(hào)的CO&#8322;回答相同問(wèn)題時(shí)的排放量比更常見的LLM 高級(jí)AI型號(hào)的CO&#8322;回答相同問(wèn)題時(shí)的排放量比更常見的LLM Jul 06, 2025 am 12:37 AM

根據(jù)最近的一項(xiàng)研究,我們?cè)噲D使AI模型的功能越精確,其碳排放量就越大 - 某些提示產(chǎn)生的二氧化碳比其他提示高達(dá)50倍。

See all articles