簡體   English   中英

從post-receive鈎子運行git命令

[英]Running git commands from post-receive hook

解釋為什么我要這樣做很復雜,但是我想做的是為特定的git存儲庫配備一個執行以下操作的post-receive鈎子:

  1. 移至測試目錄
  2. 克隆剛剛更新的項目。
  3. 簽出特定分支。
  4. 做一些測試

接收后的代碼如下所示(簡化):令“ 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM