我有一個git post接收掛鉤,它會觸發構建系統上的構建。 我需要在鉤子腳本中創建一個形式爲「$ repo-name + $ branch」的字符串。git post-receive hook如何獲取正在運行的repo的名稱?
我可以解析分支,但我怎樣才能從git獲取存儲庫名稱?
謝謝!
我有一個git post接收掛鉤,它會觸發構建系統上的構建。 我需要在鉤子腳本中創建一個形式爲「$ repo-name + $ branch」的字符串。git post-receive hook如何獲取正在運行的repo的名稱?
我可以解析分支,但我怎樣才能從git獲取存儲庫名稱?
謝謝!
我想,「存儲庫名稱」在git中並不是一個明確的概念。也許最有用的是在裸倉庫中返回whatever.git
或者在具有工作樹的倉庫中返回whatever
。我測試過該位的有兩種情況Bourne shell的交易從post-receive
鉤內正確:
if [ $(git rev-parse --is-bare-repository) = true ]
then
REPOSITORY_BASENAME=$(basename "$PWD")
else
REPOSITORY_BASENAME=$(basename $(readlink -nf "$PWD"/..))
fi
echo REPOSITORY_BASENAME is $REPOSITORY_BASENAME
更新:如果你想刪除.git
延長裸存儲庫的情況下,你可以添加一個線到第一殼體剝離其關閉:如果一個人使用Gitolite
REPOSITORY_BASENAME=$(basename "$PWD")
REPOSITORY_BASENAME=${REPOSITORY_BASENAME%.git}
您可以檢查$ GIT_DIR或$ GIT_WORK_TREE並從那裏獲取回購商品名稱。
'GIT_DIR'設置爲'.','GIT_WORK_TREE'沒有在環境中設置鉤子。 – 2011-04-07 16:12:01
你可以做git rev-parse --show-toplevel
,它會給你頂層目錄的路徑,並將名稱拉出來(reponame.git對於遠程訪問的回購是常規的)。
$PWD
也可能具有相同的信息,但我不確定。
'git rev-parse --show-toplevel'在裸倉庫中不起作用。 ('$ PWD'將是具有工作樹的存儲庫的工作樹的頂層,或者是裸倉庫的存儲庫目錄本身,因此您需要做更多的工作才能獲得有用的名稱......) – 2011-04-07 16:07:57
,所述GL_REPO
變量在post-receive
環境默認可用。
太好了。這樣可行。我怎樣才能從裸回購中刪除「.git」? – Jacko 2011-04-07 16:42:28
@Jacko:我已經更新了答案,提出了一種方法來做到這一點 – 2011-04-07 16:49:49
Aweseome !!!!謝謝。 – Jacko 2011-04-07 17:12:42