我需要从其他目录获取已修改文件的列表。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")
慕森王
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
- 2 回答
- 0 关注
- 158 浏览
添加回答
举报
0/150
提交
取消
