我們使用git和中央repo(使用Gitosis)。我創建了一個post-receive鉤子,當更改被推送到中央倉庫時,生成一個發送到dev郵件列表的電子郵件,並從git倉庫中的文檔文件夾生成文檔。Git post-receive hook不工作
因此,在〜混帳/我有一個目錄,我們將稱之爲「一」包含混帳回購協議的副本。後收到鉤的樣子:
#!/bin/bash
cd ~git/repositories/a.git
. ~git/post-receive-email &> /dev/null
(cd ~git/a && git pull &> ~git/pull_log.log && php ~git/a/scripts/generate_markdown_documentation.php &> ~git/doc_log.log)
電子郵件腳本工作,但是文檔生成是沒有的。 pull_log.log的內容是:
fatal: Not a git repository: '.'
這讓我覺得,它不改變正確的目錄在上面的腳本中的第5行。我錯了嗎?我怎樣才能使這個工作?
編輯:我已經更新了回覆中建議的post-receive hook。該腳本現在是:
#!/bin/bash
function die {
echo "$*" >&2; exit 1
}
function checkgit {
[ -d "$1/.git" ] || die "$1 could not possibly be a git repo; $1/.git is not a dir"
}
cd ~git/repositories/a.git
. ~git/post-receive-email &> /dev/null
(set -x
checkgit ~git/a
cd ~git/a
checkgit .
pwd
git pull
php ~git/a/scripts/generate_markdown_documentation.php)
而且我從混帳推以下的輸出:
+ checkgit /var/git/a
+ '[' -d /var/git/a/.git ']'
+ cd /var/git/a
+ checkgit .
+ '[' -d ./.git ']'
+ pwd
/var/git/a
+ git pull
fatal: Not a git repository: '.'
+ php /var/git/a/scripts/generate_markdown_documentation.php
更多的幫助?
哦,如果我運行該腳本自己,它的工作原理(我運行它說掛鉤/後接收)
發現了這個問題,這要歸功於serverfault - 基本上,環境變量GIT_DIR
和GIT_WORK_TREE
設置當掛鉤運行時,這些影響git拉動不利。取消設置變量可以解決問題。
將'git pull'更改爲'pwd'並查看日誌中顯示的內容。 – 2010-02-23 00:57:28
哦!討厭。 +1用於追蹤問題並殺死它! – 2010-02-25 03:05:36
你是如何找到pull_log.log文件的?我不知道日誌存儲在哪裏... – munmunbb 2015-11-16 23:57:52