git describe --match不适用于TeamCity

时间:2017-10-26 04:59:42

标签: git gradle teamcity git-tag

在我们的BitBucket中,我们有一些像这样的标签:

build-0.0.4.152  
0.0.4  
build-0.0.3.151  
build-0.0.3.150  
0.0.3 

所有带有前缀“ build ”的标签都来自中间预发布版本,其中不带前缀的标签是生产中发布的版本。我有一个gradle方法从VCS root获取最新的生产标记(所以在这种情况下,我希望获得标记0.0.4):

def getVersionFromTag() {  
   def stdout = new ByteArrayOutputStream()  
  exec {  
   commandLine 'git', 'describe', '--abbrev=0', '--match="[!build]*"'   
   standardOutput = stdout  
  }  
   return stdout.toString().trim()  
}  

在IntelliJ本地,构建能够获得正确的标记。但是在TeamCity上,它在Build log中显示错误:

fatal: No names found, cannot describe anything.

如果我从命令行中删除参数'--match="[!build]*"',在上面的方法中,它会工作,但它将获得最新的标记( build-0.0.4.152 ,但不是什么我想 0.0.4 )。所以我认为该论点在TeamCity的git版本中不可用,但它可以在我自己的git(2.6.3.windows.1)上获得,是真的吗?

如果我错了,请纠正我,让我知道如何解决这个问题。谢谢

1 个答案:

答案 0 :(得分:0)

删除双引号后,它可以正常工作

'--match=[!build]*'