0

このhttp://joemaller.com/990/a-web-focused-git-workflow/に似た git ワークフローをセットアップしました。基本的に、裸のリモートリポジトリに報告するローカルリポジトリがあります。次に、Web 経由でアクセスできる展開ディレクトリを、同じベア リポジトリにもレポートするリポジトリとして設定します。

ローカルの開発者が変更をリモート リポジトリにプッシュすると、フックが Web フォルダに入り、リポジトリからプルされるように git フックが設定されているため、常に最新かつ最高の状態になります。すべてがかなりうまく機能します。

私の核心は、GIT を必要とせず、FTP 経由で Web フォルダーにファイルをアップロードしたいだけの人になだめようとしているということです。ファイルが書き込まれたり、変更されたり、移動されたり、削除されたり、作成されたりするたびに、web フォルダーに inotifywait モニターを設定することで、これが機能するようになりました...このための私の bash スクリプトは次のとおりです。

!/bin/sh
inotifywait @*.swp -rm -e modify,move,create,delete,delete_self,unmount /var/www/html/mysite | while read
do

now=$(date +"%m_%d_%Y:%T")
echo $now >> temp.txt

cd /var/www/html/mysite || exit
git add --all
git commit -m "ftp update $now" -a
done

これも実際に機能しますが、私が観察しているのは、web フォルダー内のファイルを変更して inotifywait をトリガーすると、while ループに陥っていることです。誰でもこれについて何か考えがありますか?理想的には、不要な git コマンドを継続的に実行する while ループに陥らないようにすることです。

ありがとう!

4

1 に答える 1

0

inotifywaitのマニュアルページでは、別のループスタイルを実行することを提案しています。

while inotifywait -e modify /var/log/messages; do
    …
done

あなたはそれを試しましたか?

于 2012-12-07T05:07:58.313 に答える