2011-04-07 111 views

回答

37

我想,「存儲庫名稱」在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} 
+1

太好了。這樣可行。我怎樣才能從裸回購中刪除「.git」? – Jacko 2011-04-07 16:42:28

+0

@Jacko:我已經更新了答案,提出了一種方法來做到這一點 – 2011-04-07 16:49:49

+0

Aweseome !!!!謝謝。 – Jacko 2011-04-07 17:12:42

1

您可以檢查$ GIT_DIR或$ GIT_WORK_TREE並從那裏獲取回購商品名稱。

+2

'GIT_DIR'設置爲'.','GIT_WORK_TREE'沒有在環境中設置鉤子。 – 2011-04-07 16:12:01

0

你可以做git rev-parse --show-toplevel,它會給你頂層目錄的路徑,並將名稱拉出來(reponame.git對於遠程訪問的回購是常規的)。

$PWD也可能具有相同的信息,但我不確定。

+1

'git rev-parse --show-toplevel'在裸倉庫中不起作用。 ('$ PWD'將是具有工作樹的存儲庫的工作樹的頂層,或者是裸倉庫的存儲庫目錄本身,因此您需要做更多的工作才能獲得有用的名稱......) – 2011-04-07 16:07:57

0

,所述GL_REPO變量在post-receive環境默認可用。

相關問題