Version control TeamCity,如何获取已编辑文件的名称

Version control TeamCity,如何获取已编辑文件的名称,version-control,teamcity,Version Control,Teamcity,我正在使用TeamCity,我对它还不熟悉。我已经向TeamCity添加了一个构建配置,并创建了一个VCS根目录以连接到它 但是,我的项目有一个特殊要求,即检测VCS根位置中更改的特定文件,并在构建步骤中使用该文件。我相信这可以在TeamCity实现,但我不知道如何实现 有什么帮助吗?谢谢,听起来您需要一个指定VCS触发器规则的VCS触发器,以便在有人更改特定文件时运行生成配置。有一些很好的例子说明了如何做到这一点。如果您试图在一个特定文件上触发生成,请尝试以下操作: +:foo/bar.txt

我正在使用TeamCity,我对它还不熟悉。我已经向TeamCity添加了一个构建配置,并创建了一个VCS根目录以连接到它

但是,我的项目有一个特殊要求,即检测VCS根位置中更改的特定文件,并在构建步骤中使用该文件。我相信这可以在TeamCity实现,但我不知道如何实现


有什么帮助吗?谢谢,

听起来您需要一个指定VCS触发器规则的VCS触发器,以便在有人更改特定文件时运行生成配置。有一些很好的例子说明了如何做到这一点。如果您试图在一个特定文件上触发生成,请尝试以下操作:

+:foo/bar.txt
这将从触发器规则中排除所有文件,然后在foo目录中包括bar.txt。路径相对于存储库的根(不包括前面的斜杠)。如果有人修改foo/bar.txt,构建配置将被触发运行


VCS触发规则还支持模式匹配和各种其他选项。查看文档。

要更改文件名,我就是这么做的。多亏了萨姆·琼斯

我使用了
System.TeamCity.build.changedFiles.file
变量,如下所示

  • 添加命令行生成步骤
  • 选择“作为自定义脚本运行”
  • 在脚本框中添加脚本
    复制“%system.teamcity.build.changedFiles.file%”changelog.txt
  • 您将以上指定的格式在changelog.txt文件中获得更改


    注意:
    teamcity.build.changedFiles.file
    不起作用。如果我有多个文件,比如bar.txt、bar1.txt、bar2.txt,您需要使用
    system.teamcity.build.changedFiles.file

    ?我可以为它们中的每一个添加触发器吗?这可以在不知道目录中的文件名的情况下完成吗?如果我按照
    +:foo/*.txt
    的方式进行操作,我是否能够获得已编辑的特定文件名?是的,您可以添加任意数量的文件。您可以执行
    +:bar.txt
    +:bar1.txt
    +:bar2.txt
    等操作,也可以使用
    +:foo/**
    指定目录中的所有文件。有两个预定义的生成参数可能有用。一个是描述如何触发构建的
    teamcity.build.triggeredBy
    。另一个是
    teamcity.build.changedFiles.file
    ,它是指向文件的路径,其中包含有关生成中已更改文件的信息。您可以阅读有关这些参数的更多信息。非常感谢Sam,这对我帮助很大。或者,您可以在应用程序的生成步骤中使用“-DchangedFiles=%system.teamcity.build.changedFiles.file%”添加其他参数,并在应用程序中检索为系统属性