我想爲每個git開發我的網站,但我有某種雞和蛋的問題。有一臺服務器具有git -bare存儲庫(主repo; /var/dev.git),一個用於Apache webserver的doc-root(var/www)的克隆,並且爲每個用戶提供一個本地存儲庫。Git部署與post-receive hook
好吧,這個工程真的很好,但現在我想添加一個「特殊」功能。如果有人添加一個.less文件並將其推送到main-repo,它應該被「編譯」成一個css文件並添加到存儲庫。此外,www-clone應該將所有新文件(包括新的CSS樣式)重新放回到主回購中。
我第一次嘗試
首先,我強迫WWW根回購拉的最新變化,然後我試圖找到所有的減檔和消防少編譯器。
lessc [input] [output]
的問題是,混帳似乎觸發拉和推 - 接收後並回顧,本身在無窮遠環的時尚
#!/bin/sh
git --git-dir /var/www/.git reset --hard HEAD
git --git-dir /var/www/.git pull /var/dev.git master
echo "###### fire LESS Compiler #####"
find /var/www -name *.less -exec sh -c 'lessc {} $(dirname {})/
$(echo $(basename {} .less)$(echo ".css")) >> $(dirname {})
/less_error.log 2>&1 ' \;
echo "###### add new less-out files to repo #####"
git --git-dir /var/www/.git add .
git --git-dir /var/www/.git commit -am "css style added"
git --git-dir /var/www/.git push /var/dev.git master
echo "########### END #############"
(其與error building trees
停止)爲了獲得更少的錯誤消息,我將標準錯誤輸出到標準輸出(因爲AFAIK追加不能用於stderr管道重定向)並將其追加到error_less-file。 (第二個問題:)我怎麼才能預見它只有在出現錯誤時才創建文件? (目前它在每個lessc-call上創建)
你的Web服務器的生產可能不應該推自動更改您的Git回購。如果你想要在Git中編譯的東西,那麼在你推入產品之前就做好。 – Amber 2012-08-11 07:11:44
這不是一個生產網絡服務器 - 我用它來開發。文檔根目錄受密碼保護。 – NaN 2012-08-11 07:19:30
好的,但這一點仍然代表「生產」的開發定義 - 在推送到您的Web服務器的服務目錄之前編譯,而不是之後。 – Amber 2012-08-11 07:40:55