[英]git-clone and post-checkout hook
根據手冊, post-checkout
hook在git checkout
(正如預期)之后運行,但也在git clone
(除非你傳遞--no-checkout
)。
很好,現在,考慮以下因素:
git clone
之前的本地存儲庫 --template
一起使用的自定義模板目錄中的
--template
被復制為不可執行的,因此在
git clone
之后
不會執行
似乎不可能在git clone
之后執行post-checkout
鈎子。 盡管如此, http: githooks
上的githooks
手冊頁明確說明了一種避免執行的方法,以及在執行時傳遞的參數,這表明可以執行自定義git-clone
后掛鈎。
那么,怎么可能呢? 我顯然在這里遺漏了一些東西。
結果
我想你可以進行自定義安裝 - 重命名.../share/git-core/templates/hooks
以刪除.sample
后綴。
您還可以將一個充滿符號鏈接的模板目錄創建到存儲庫中的鈎子目錄(例如, post-checkout -> ../../hooks/post-checkout
)。 然后,如果克隆的repo包含該特定的鈎子,它就會被執行。
不過,你說得對,在大多數情況下都不會發生。
編輯:我剛測試過它,並且--template
選項似乎確實保留了權限,因此這是一種更加直接的方式來實現它。 你看到什么表明它剝離了那一點?
關於版本的最終決定權:你正在網上查看更新版本的git而不是你正在使用的文檔。 這個功能是在dfa7a6c中添加的(克隆:簽出時運行post-checkout hook); git describe說直到v1.6.2-rc2才包括這個。
從githooks文檔 :
運行git-init時 ,會將一些示例掛鈎復制到新存儲庫的
hooks
目錄中,但默認情況下它們都被禁用。 要啟用掛鈎,請通過刪除其.sample
后綴來重命名它。
這個初始化發生作為創建克隆,注意調用的一部分init_db
在builtin-clone.c
。
例如:
$ cat /tmp/my-git-template/hooks/post-checkout #! /bin/bash echo "Hello from $0" $ git clone --template=/tmp/my-git-template file:///tmp/repo.git my-clone Initialized empty Git repository in /tmp/my-clone/.git/ remote: Counting objects: 3, done. remote: Total 3 (delta 0), reused 0 (delta 0) Receiving objects: 100% (3/3), done. Hello from .git/hooks/post-checkout
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.