[英]Running git commands from post-receive hook
解釋為什么我要這樣做很復雜,但是我想做的是為特定的git存儲庫配備一個執行以下操作的post-receive鈎子:
接收后的代碼如下所示(簡化):令“ repo”為git存儲庫的名稱,令“ testdir”為同級目錄的名稱,最初為空,而使“ dev”為分支的名稱。
cd ../testdir
git clone --local ../repo .
git checkout dev
但是,當腳本中的代碼進入“ git checkout”時,git會返回“致命:不是git存儲庫:'。”
我不知道為什么git認為“ testdir”不是git存儲庫。 如果我從命令行(而不是在接收后)運行該命令,那么它們將正常工作。 我不知道為什么這種行為與接收后的行為會有所不同。 有任何想法嗎?
您需要在post-receive
掛鈎中取消設置GIT_DIR
。 問題是在您的掛鈎腳本運行時, GIT_DIR=.
,在進行cd和克隆操作之后,該功能將不再有用。
我設置了一個本地測試環境,當我post-receive
腳本如下所示:
#!/bin/sh
cd ../testdir
git clone --local ../upstream.git .
git checkout dev
我得到這個:
remote: fatal: Not a git repository: '.'
但是,如果我未設置GIT_DIR
變量:
#!/bin/sh
unset GIT_DIR
cd ../testdir
git clone --local ../upstream.git .
git checkout dev
一切正常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.