简体   繁体   English

Groovy执行git shell命令

[英]Groovy execute a git shell command

I'm trying to execute git shell command in groovy. 我正在尝试在groovy中执行git shell命令。 The first is executed well but the second returns the exit code 128: 第一个执行得很好但第二个返回退出代码128:

   def workingDir = new File("path/to/dir")
   "git add .".execute(null, workingDir)
   def p = "git reset --hard".execute( null, workingDir )
   p.text.eachLine {println it}
   println p.exitValue()

what's the problem with this code? 这段代码有什么问题?

The second process is starting before the first one completes. 第二个过程在第一个过程完成之前开始。 When the second git process starts git recognizes that there is already a git process operating in that same directory which could cause problems so it errors out. 当第二个git进程启动时,git会识别出已经有一个git进程在同一个目录中运行,这可能会导致问题,从而导致错误输出。 If you read the error stream from the first process you will see something like this: 如果您从第一个进程读取错误流,您将看到如下内容:

fatal: Unable to create 'path/to/dir/.git/index.lock': File exists.

If no other git process is currently running, this probably means a
git process crashed in this repository earlier. Make sure no other git
process is running and remove the file manually to continue.

If you wait for the first one to finish before starting the second one, that should work. 如果你在开始第二个之前等待第一个完成,那应该有效。 Something like this: 像这样的东西:

def workingDir = new File("path/to/dir/")

def p = "git add .".execute(null, workingDir)
p.waitFor()
p = "git reset --hard".execute( null, workingDir )
p.text.eachLine {println it}
println p.exitValue()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM