gitごとにウェブサイトを開発したいのですが、鶏が先か卵が先かという問題があります。git --bareリポジトリ(メインリポジトリ; /var/dev.git)を備えたサーバーが1つあり、Apache Webサーバーのdoc-root(var / www)用に1つのクローンがあり、ユーザーごとに1つのローカルリポジトリがあります。
わかりました。これは非常にうまく機能しますが、ここで「特別な」機能を追加したいと思います。誰かが.lessファイルを追加してそれをメインリポジトリにプッシュした場合、それをcssファイルに「コンパイル」してリポジトリに追加する必要があります。さらに、www-cloneは、すべての新しいファイル(新しいcss-stylesを含む)をメインリポジトリに戻す必要があります。
私の最初の試み
まず、www-root-repoに最新の変更をプルさせ、次に、より少ないファイルをすべて見つけて、より少ないコンパイラーを起動しようとします。
lessc [input] [output]
問題は、gitがプルとプッシュでポストレシーブをトリガーし、リコールするように見えることです-それ自体が無限ループのように(で停止します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にパイプし(stderr-pipe-redirectionではAFAIKの追加ができないため)、error_less-fileに追加します。(2番目の質問:)エラーが発生した場合にのみファイルを作成するようにするにはどうすればよいですか?(現時点では、すべてのlessc-callで作成されています)