Groovy 执行一个 git shell 命令 [英] Groovy execute a git shell command

查看:43
本文介绍了Groovy 执行一个 git shell 命令的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试在 groovy 中执行 git shell 命令.第一个执行良好,但第二个返回退出代码 128:

I'm trying to execute git shell command in groovy. The first is executed well but the second returns the exit code 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()

这段代码有什么问题?

推荐答案

第二个过程在第一个完成之前就开始了.当第二个 git 进程启动时,git 识别出在同一目录中已经有一个 git 进程在运行,这可能会导致问题,因此它会出错.如果您从第一个过程中读取错误流,您将看到如下内容:

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. 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()

这篇关于Groovy 执行一个 git shell 命令的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆