首页 文章

Groovy执行git shell命令

提问于
浏览
3

我正在尝试在groovy中执行git shell命令 . 第一个执行得很好但第二个返回退出代码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()

这段代码有什么问题?

1 回答

  • 4

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

    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.
    

    如果你在开始第二个之前等待第一个完成,那应该有效 . 像这样的东西:

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

相关问题