Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.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
“SVN”的格式;“包括地区”;在詹金斯_Svn_Continuous Integration_Jenkins - Fatal编程技术网

“SVN”的格式;“包括地区”;在詹金斯

“SVN”的格式;“包括地区”;在詹金斯,svn,continuous-integration,jenkins,Svn,Continuous Integration,Jenkins,在Jenkins项目上设置“包含区域”时,帮助文本会提到以下内容: 如果设置为,并且Jenkins设置为轮询更改,则Jenkins在确定是否需要触发生成时将忽略不在此列表中的任何文件和/或文件夹。 每个包含使用正则表达式模式匹配,并且必须用新行分隔 当您需要签出整个资源以进行构建,但只想在子集发生更改时进行构建时,这非常有用 /trunk/myapp/c/library1/* /trunk/myapp/c/library2/* 如果签出/trunk/myapp,则仅当c/library1和c/l

在Jenkins项目上设置“包含区域”时,帮助文本会提到以下内容:

如果设置为,并且Jenkins设置为轮询更改,则Jenkins在确定是否需要触发生成时将忽略不在此列表中的任何文件和/或文件夹。 每个包含使用正则表达式模式匹配,并且必须用新行分隔

当您需要签出整个资源以进行构建,但只想在子集发生更改时进行构建时,这非常有用

/trunk/myapp/c/library1/*
/trunk/myapp/c/library2/*

如果签出/trunk/myapp,则仅当c/library1和c/library2子树发生更改时,才会生成。 如果还指定了排除区域,则当文件位于包含列表而不在排除列表中时,不会忽略该文件

我仍然不太清楚这个“资源”应该是什么

假设我签出了存储库的一部分:

我们还假设我将其签出到一个名为“theproject”的文件夹中

现在,假设我只希望在repo的“documents/cat pictures/”文件夹中发生更改时触发构建

我是不是应该把:

  • /行李箱/文档/cat图片/*
  • /文档/cat图片/*
  • /repos/projects/myfancyproject/trunk/documents/cat pictures/*
  • 文档/cat图片/*
  • 行李箱/文档/cat图片/*
  • 甚至:编号1到5,前缀为“theproject/”

    如果您的存储库

    https://svn.mydomain.com/repos/projects/myfancyproject/trunk
    
    如果您只想在
    文档/cat图片中发生更改时生成,请将以下内容添加到包含列表中:

    /trunk/documents/cat-pictures/*
    
    这是你名单上的第一个

    在subversion中,“trunk”、“tags”和“branchs”只是文件夹,虽然它们似乎已成为标准名称,但如果您愿意,它们可以被称为“cats”、“dogs”和“birds”

    存储库的根目录位于
    https://svn.mydomain.com/repos/projects/myfancyproject/
    ,因此您将
    /trunk/documents/cat pictures
    作为包含区域

    至少这是我的理解

    Sagar的答案(你名单上的第1个)对我不起作用。工作的是整个相对URL路径(存储库根目录之后的所有内容),这是更改的路径,您可以在
    svn log-v
    中看到

    因此,my Jenkins包含区域,仅包含“RC”标记:

    和两个示例修订,显示了更改的路径是否匹配:

    > svn log -v -l2 svn+ssh://svn.foo.com/svnroot/code/products/foo/tags
    ------------------------------------------------------------------------
    r175564 | joe | 2016-04-20 09:21:34 
    Changed paths:
       A /code/products/foo/tags/1.1-RC1 
    
    1.1 Release Candidate 1
    ------------------------------------------------------------------------
    r175530 | jane | 2016-04-19 09:40:18
    Changed paths:
       A /code/products/foo/tags/1.0
    
    1.0 Release
    ------------------------------------------------------------------------
    
    您还可以在
    svn info
    中找到相对URL:

    > svn info svn+ssh://svn.foo.com/svnroot/code/products/foo/tags
    Path: tags
    URL: svn+ssh://svn.foo.com/svnroot/code/products/foo/tags
    Relative URL: ^/code/products/foo/tags
    Repository Root: svn+ssh://svn.foo.com/svnroot
    

    关于这个问题的一个警告是,它取决于您的SVN服务器设置。在我们的服务器上,svn repo的根是
    https://svn.mydomain.com/repos/projects
    所以我必须加入
    /myfancyproject/trunk/documents/cat pictures/*
    我尝试了,但没有成功。文档指向regex。为什么
    *documents/cat pictures/*
    不起作用?您使用的是什么SCM?如何从Jenkins调用它-通过SCRPT/声明性管道的SCM步骤,通过其他插件?我觉得你的模式不错,但很危险。您是否可以尝试将其锚定到存储库的根目录,而不是从
    *
    开始?@SebastianSchumann噢,也许连字符需要在该品牌的正则表达式中转义?尝试一个类似的模式,但不带负号。
    > svn info svn+ssh://svn.foo.com/svnroot/code/products/foo/tags
    Path: tags
    URL: svn+ssh://svn.foo.com/svnroot/code/products/foo/tags
    Relative URL: ^/code/products/foo/tags
    Repository Root: svn+ssh://svn.foo.com/svnroot