守望者只能从根监控2级

时间:2016-02-17 03:35:31

标签: watchman

我使用Watchman 4.4.0版本,发现守望者只能从根监控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 个答案:

答案 0 :(得分:1)

如果您运行watchman find /home/udomsak/mycmd/src并且未在输出中看到这些文件,那么这就是守望者的错误。

但是,我认为我可以看到导致这种情况无法发挥作用的原因。

您使用的match表达式与/中出现的wholename字符完全匹配。

你没有详细说明你如何建立触发器,所以关于如何获得听起来像你正在寻找的行为的建议有几个不同的选择。

选项1,因为看起来你想要触发任何文件更改,只需完全删除表达式术语。

选项2,通过展开的wildmatch语法使用递归glob:["match", "**/*", "wholename"]

选项3,使用watchman-make。与使用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