git pull在Groovy中不起作用

时间:2015-04-01 22:09:41

标签: git groovy jenkins

我是Groovy语言的新手,并且正在使用它为Jenkins作业编写自定义参数。在下面的脚本中,第一个(" git checkout master")和last(" git branch -r --no-merged master")命令工作得很好。但是,git pull不会执行,因为除了初始' [git pull]'之外没有输出。我在下面评论过。从最后一个命令返回的内容" git branch -r --no-merged master"是不正确的,因为我的出身是在我当地之前。

def dir = "C:/JenkinsBuilds/WidgetLoader/Source"
def srcDir = new File(dir)

String command1 = "git checkout master"
println ("[$command1]")
Process process1 = command1.execute(null, srcDir)
process1.waitFor()
println(process1.text)

String command2 = "git pull origin master"
println ("[$command2]") // This will output
Process process2 = command2.execute(null, srcDir) 
process2.waitFor()
println(process2.text) // Only a blank line is outputted

String command3 = "git branch -r --no-merged master"
println ("[$command3]")
Process process3 = command3.execute(null, srcDir)
process3.waitFor()
println(process3.text)

def branches = ["-- SELECT BRANCH --","master"]

process3.text.eachLine {line -> branches.add(line.trim().replaceAll('origin/', ''))}

return branches

这是返回的内容

[(主)]: [git checkout master] 你的分支机构落后于原点/主人。通过10次提交,可以快进。   (使用" git pull"更新您当地的分支机构)

[git pull]

[git branch -r --no-merged master]   origin / HEAD - >产地/主   产地/主   产地/ testb1   原点/ testb2

2 个答案:

答案 0 :(得分:0)

命令参数应始终作为List传递。尝试:

def command1 = ["git", "checkout", "master"]
def command2 = ["git", "pull", "origin", "master"]
def command3 = ["git", "branch", "-r", "--no-merged", "master"]

答案 1 :(得分:0)

好的,所以我发现发生了什么事,这要归功于我找到的一段代码here

def command2 = "git pull"
println ("[$command2]")
StringBuffer sbout = new StringBuffer()
StringBuffer sberr = new StringBuffer()
Process process2 = command2.execute(null, srcDir) 
process2.waitForProcessOutput sbout, sberr
def value = process2.exitValue()
int count = sbout.toString().readLines().size()
println "${sberr.toString()}"
println "Exit value: $value, Err lines: ${sberr.toString().readLines().size()}, Out lines: $count"
assert count > 1
assert value == 0
  

[git pull]权限被拒绝(publickey)。致命:无法读取   远程存储库。

我的问题是git pull上没有异常,并且不清楚如何查看是否还有其他错误。话虽这么说,我想我会分享这段代码片段以防其他人遇到类似的问题。

我可以使用此权限错误,与原始问题无关,因此我将此评论标记为答案。