Сторож может контролировать только 2 уровня от корней
Я использовал Watchman версии 4.4.0 и обнаружил проблему в том, что watchman может контролировать только 2 уровня каталога от корней.
Так что я не уверен, что с этим не так?
Структура каталогов
src/<- set watch roots
└── Oncmd
└── Command <- **File under this can't monitor
├── GencmdCommand.php
├── InitCommand.php
└── cmdCommand.php
сторож - список наблюдения
{
"version": "4.4.0",
"roots": [
"/home/udomsak/mycmd/src"
]
}
сторож - триггер-лист
{
"version": "4.4.0",
"triggers": [
{
"name": "build_phar",
"append_files": true,
"command": [
"./build.sh"
],
"stdin": [
"name",
"exists",
"new",
"size",
"mode"
],
"expression": [
"anyof",
[
"match",
"*",
"wholename"
]
]
}
]
}
1 ответ
Если вы бежите watchman find /home/udomsak/mycmd/src
и не видите эти файлы в выводе, тогда это ошибка сторожа.
Тем не менее, я думаю, что я вижу, что вызывает это не работает, как вы ожидаете.
match
выражение, которое вы используете, не будет соответствовать /
символы, которые присутствуют в wholename
так, как вы ожидаете.
Вы не включили подробности о том, как вы установили этот триггер, поэтому в этом совете о том, как получить поведение, которое звучит так, как вы ищете, есть несколько разных вариантов.
Вариант 1, поскольку похоже, что вы хотите инициировать любое изменение файла, это просто полностью удалить термин выражения.
Вариант 2, использовать рекурсивный глобус через расширенный синтаксис wildmatch: ["match", "**/*", "wholename"]
,
Вариант 3, использовать сторож-марку. Вместо того, чтобы использовать trigger
команда, это часто значительно проще в использовании watchman-make
для этого вида использования:
$ watchman-make --make build_phar -t build -p '**/*'
# Relative to /home/udomsak/mycmd/src
# Changes to files matching **/* will execute `build_phar build`
# waiting for changes