为了账号安全,请及时绑定邮箱和手机立即绑定

从其他目录的 Go 中获取 Git 状态

从其他目录的 Go 中获取 Git 状态

Go
拉丁的传说 2022-09-26 14:55:32
我需要从其他目录获取已修改文件的列表。func main() {    log.Println("Starting Site map")    dir := "/media/my_path/ubuntu/"    git0 := "git --git-dir=" + dir + ".git --work-tree=" + dir + " status"    log.Println(git0) //<-- works when pasted in console    cmd0 := exec.Command("git", git0)    status0, err := cmd0.Output()    if err != nil {        log.Println(whereami.WhereAmI(), err)    }    log.Println(status0)    git := "git --git-dir=" + dir + ".git --work-tree=" + dir    log.Println(git)    cmd := exec.Command("git", "status", git)    status, err := cmd.Output()    if err != nil {        log.Println(whereami.WhereAmI(), err)    }    log.Println(status)    log.Println("End Site map")}I 有以下输出:2021/05/24 11:38:07 Starting Site map2021/05/24 11:38:07 git --git-dir=/media/my_path/ubuntu/.git --work-tree=/media/my_path/ubuntu/ status2021/05/24 11:38:07 File: main.go  Function: main.main Line: 19 exit status 12021/05/24 11:38:07 []2021/05/24 11:38:07 git --git-dir=/media/my_path/ubuntu/.git --work-tree=/media/my_path/ubuntu/2021/05/24 11:38:07 File: main.go  Function: main.main Line: 28 exit status 1282021/05/24 11:38:07 []2021/05/24 11:38:07 End Site map此命令:粘贴到控制台时工作正常。git --git-dir=/media/my_path/ubuntu/.git --work-tree=/media/my_path/ubuntu/ status预期的结果将是包含已修改文件的数组。
查看完整描述

2 回答

?
慕工程0101907

TA贡献1887条经验 获得超5个赞

exec.Command接受一个命令和一些参数。

你用“git”来称呼它,然后是“git...”。作为参数,其执行方式如下

git "git --git-dir …"

这是行不通的。


  • 不要在参数中重复该命令。

  • 使用单个参数。

  • 提供 git 命令的路径。

每个参数都应该是一个单独的字符串逗号分隔。

exec.Command("/path/to/git", "--git-dir=" + dir + ".git", "--work-tree=" + dir, "status")


查看完整回答
反对 回复 2022-09-26
?
慕森王

TA贡献1777条经验 获得超3个赞

这对我有用:


package main


import (

   "os"

   "os/exec"

)


func main() {

   c := exec.Command("git", "status")

   c.Dir = "/media/my_path/ubuntu"

   c.Stdout = os.Stdout

   c.Run()

}

https://golang.org/pkg/os/exec#Cmd.Dir


查看完整回答
反对 回复 2022-09-26
  • 2 回答
  • 0 关注
  • 158 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号