Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 如何在Teamcity中设置VCS触发器,使其仅在特定目录中的文件发生更改时运行构建?_Git_Triggers_Teamcity - Fatal编程技术网

Git 如何在Teamcity中设置VCS触发器,使其仅在特定目录中的文件发生更改时运行构建?

Git 如何在Teamcity中设置VCS触发器,使其仅在特定目录中的文件发生更改时运行构建?,git,triggers,teamcity,Git,Triggers,Teamcity,是否可以在TC中为生成设置VCS触发器,以便在合并中特定目录的内容发生更改时启动生成 假设我的项目结构如下所示: / |_ foo/ |_ bar/ |_ test/ |_ file.txt |_ baz/ 我的VCS根目录仅配置为指向项目的根目录级别。换句话说,我没有任何自定义的签出规则,这意味着在每个构建中,TC将签出项目的整个副本。我还将VCS签出模式配置为始终签出代理上的文件,并选中该框以在生成之前清除签出目录中的所有文件 现在,我想创建一个VCS触发器,它仅在

是否可以在TC中为生成设置VCS触发器,以便在合并中特定目录的内容发生更改时启动生成

假设我的项目结构如下所示:

/
|_ foo/
|_ bar/
    |_ test/
        |_ file.txt
|_ baz/
我的VCS根目录仅配置为指向项目的根目录级别。换句话说,我没有任何自定义的签出规则,这意味着在每个构建中,TC将签出项目的整个副本。我还将VCS签出模式配置为始终签出代理上的文件,并选中该框以在生成之前清除签出目录中的所有文件

现在,我想创建一个VCS触发器,它仅在
/bar/test
目录的内容发生任何更改时才触发构建。鉴于上述项目结构,我使用以下配置创建了一个VCS触发器:

  • 选中在每次签入时触发生成
  • 选中“不用于安静时段模式”
  • 添加了以下触发规则:
    +:root=MyProject:bar/test/**
    (这里“MyProject”是我给root的名称
根据我读过的关于TC触发器的所有文档,这本应该可以做到,但实际的行为并不完全符合我的预期,这是基于我的理解

在这种情况下,当我将更改合并到
foo/
目录时,没有按预期触发任何更改。但是,如果我将更改合并到
bar/
目录,则会触发我的生成,即使规则的配置不是针对该目录

我尝试过但没有成功的一些规则是:

  • +:root=MyProject:*bar/test**
  • +:root=MyProject:*test**
  • +:root=MyProject:/bar/test/**
  • +:**bar/test/**
  • +:**条/测试**
  • +:bar/test/**
  • +:条/测试
我尝试了很多不同的规则变化,但不管怎样,我仍然看到触发器的行为不一致,我完全不知道为什么会发生这种情况。有人成功地设置了基本的VCS触发器吗?我也不完全理解的一件事是VCS根和触发器之间的关系呃,我觉得我可能误解了什么,但这很难说