如何在 Jenkins 中使用 Groovy 脚本设置颠覆工作区格式?

How to set subversion workspace format with a Groovy script in Jenkins?

我正在尝试以编程方式更改 SubversionSCM 插件的 Subversion 工作区格式 (Img)。当然,我一直在尝试使用 groovy 脚本,但我找不到任何方法。

我能够在 Groovy 控制台中通过 运行 这个脚本检索当前格式:

import jenkins.model.*

def inst = Jenkins.getInstance()
def desc = inst.getDescriptor("hudson.plugins.git.GitSCM")
desc =inst.getDescriptor("hudson.scm.SubversionSCM")

println(desc.getWorkspaceFormat())

这打印出正确的 31。它是在 "svnkit" 的接口 "ISVNWCDb" 接口中找到的 "WC_FORMAT_18" 成员的值。您可以在插件 here.

的 git 存储库中看到它被使用

搜索颠覆插件的文档我找不到任何设置它的方法,也找不到 SubversionSCM descriptor.

中的任何 public 方法

有没有办法以编程方式配置该设置。我更喜欢 groovy 脚本,但目前任何东西都可以。

我一直在为同样的事情苦苦挣扎,并找到了一些似乎有效的方法。 正如您已经发现的,SubversionSCM 描述符上没有工作区格式的 setter,但工作区格式作为私有字段在那里。

这似乎对我有用:

def required_format = 31 //31 is SVN 1.8 WF.
svn_desc = instance.getDescriptor("hudson.scm.SubversionSCM")
if(svn_desc.getWorkspaceFormat() != required_format)
{
    Field wf = desc.getClass().getDeclaredField("workspaceFormat")
    wf.setAccessible(true) //Private field -- make it public
    wf.set(desc, required_format)
    wf.setAccessible(false) //And make it private again
}

这在带有 Subversion 插件 2.10.6 的 Jenkins 2.122 中有效