我想根据 git 开发我的网站,但我遇到了某种先有鸡还是先有蛋的问题。有一台服务器带有 git --bare 存储库(主存储库;/var/dev.git),一个克隆用于 apache 网络服务器的 doc-root (var/www),每个用户都有一个本地存储库。
好的,这真的很好用,但现在我想添加一个“特殊”功能。如果有人添加 .less 文件并将其推送到主存储库,则应将其“编译”为 css 文件并添加到存储库中。此外,www-clone 应该将所有新文件(包括新的 css 样式)拉回 main-repo。
我的第一次尝试
首先,我强制 www-root-repo 拉取最新的更改,然后我尝试找到所有 less 文件并启动 less 编译器。
lessc [input] [output]
问题是 git 似乎在拉取和推送时触发了后接收,并以无限循环的方式自行召回(它以 a 停止error building trees
)
#!/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 #############"
为了获得更少的错误消息,我将 stderr 传送到 stdout(因为 AFAIK 无法使用 stderr-pipe-redirection 附加)并将其附加到 error_less 文件。(第二个问题:)只有在发生错误时,我才能创建文件?(目前它在每个lessc-call上创建)