我想为每个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