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

从 Go 'exec()' 调用 `git shortlog` 有什么问题?

从 Go 'exec()' 调用 `git shortlog` 有什么问题?

Go
POPMUISE 2023-03-21 17:12:34
我试图git shortlog从 Go 中调用以获取输出,但我遇到了麻烦。这是我如何使用以下方法执行此操作的工作示例git log:package mainimport (    "fmt"    "os"    "os/exec")func main() {    runBasicExample()}func runBasicExample() {    cmdOut, err := exec.Command("git", "log").Output()    if err != nil {        fmt.Fprintln(os.Stderr, "There was an error running the git command: ", err)        os.Exit(1)    }    output := string(cmdOut)    fmt.Printf("Output: \n%s\n", output)}这给出了预期的输出:$>  go run show-commits.go Output: commit 4abb96396c69fa4e604c9739abe338e03705f9d4Author: TheAndruuDate:   Tue Aug 21 21:55:07 2018 -0400    Updating readme但我真的很想用git shortlog.出于某种原因......我无法让它与 shortlog 一起工作。又是这个程序,唯一的变化是 git 命令行:package mainimport (    "fmt"    "os"    "os/exec")func main() {    runBasicExample()}func runBasicExample() {    cmdOut, err := exec.Command("git", "shortlog").Output()    if err != nil {        fmt.Fprintln(os.Stderr, "There was an error running the git command: ", err)        os.Exit(1)    }    output := string(cmdOut)    fmt.Printf("Output: \n%s\n", output)}输出为空:$>  go run show-commits.go Output: 我可以git shortlog直接从命令行运行,它似乎工作正常。检查文档后,我相信“shortlog”命令是 git 本身的一部分。任何人都可以帮助指出我可以做些什么不同吗?
查看完整描述

1 回答

?
www说

TA贡献1775条经验 获得超8个赞

事实证明,我能够通过重新阅读git 文档找到答案

答案是在这一行:

如果没有在命令行上传递任何修订,并且标准输入不是终端或没有当前分支,则 git shortlog 将输出从标准输入读取的日志摘要,而不引用当前存储库。

尽管我可以git shortlog从终端运行并看到预期的输出,但在通过exec()命令运行时,我需要指定分支。

所以在上面的示例中,我将“master”添加到命令参数中,如下所示:

cmdOut, err := exec.Command("git", "shortlog", "master").Output()

一切都按预期进行。


查看完整回答
反对 回复 2023-03-21
  • 1 回答
  • 0 关注
  • 82 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信