
私はディレクトリを監視するためにこのコマンドを使用しています:
inotifywait -r -e modify,create,delete --exclude ".*(\.(git|idea)|(.*(___jb_tmp___|___jb_old___)))" my-dir
しかし、期待どおりに動作しません。私が望むのは、変更されたすべてのファイルが除外された場合にのみ実行されないことです。少なくとも1つのファイルが除外されずに変更された場合、inotifywaitは「トリガー」を望んでいます。
私の全体的な計画は、Pythonファイルやその他の関連コンテンツが変更されるたびにコードを削除サーバーにプッシュすることです。 IDE(PyCharm)でメタファイルまたはgitファイルのみを変更するときにコードをプッシュしたくありません。
これを行う方法はありますか?
PyCharmでPythonファイルを変更すると、一部のファイルが次に変更されたため、inotifywaitは実行されません。_jb_tmp_。ただし、Pythonファイルを手動で変更すると機能します(たとえば、nanoやvimなど)。
答え1
私の質問のコメントで述べたように、問題はinotifywait
PyCharmのために発生していないことがわかりました。 PyCharmには、変更を最初に一時ファイルに書き込むようにIDEに指示し、成功すると元のファイルを削除し、一時ファイル名を元のファイル名に変更する「Safe Write」というオプションがあることがわかりました。
これがinotifywait
、次のイベントのみが表示される理由です。
$ inotifywait -r -m -e modify,create,delete my-dir
my-dir/ CREATE main.py___jb_tmp___
my-dir/ MODIFY main.py___jb_tmp___
my-dir/ DELETE main.py___jb_old___
my-dir/.idea/ CREATE workspace.xml___jb_tmp___
my-dir/.idea/ MODIFY workspace.xml___jb_tmp___
my-dir/.idea/ DELETE workspace.xml___jb_old___
my-dir/.git/ CREATE index.lock
my-dir/.git/ DELETE index.lock
したがって、PyCharmでセキュリティ書き込みを無効にし、次のコマンドを使用します。
inotifywait -r -e modify,create,delete --exclude ".*(\.git|\.idea)" my-dir
これがまさに私が望むものです。私が見たイベントはinotifywait
こんな感じです。
my-dir/main.pyを修正