【问题标题】:execute git blame command in java在java中执行git blame命令
【发布时间】:2012-06-17 20:45:45
【问题描述】:

我正在尝试使用以下 Java 语法来执行 Git blame 命令:

Process process = Runtime.getRuntime().exec("/usr/bin/git blame https://github.com/git/git/alloc.c > TestGit.txt");

但是,当我在 Java 中运行代码时,它没有给出任何结果。而且,当我尝试在终端中执行它时,它只是创建了一个空的“TestGit.txt”文件,我得到了错误:fatal: Not a git repository (or any of the parent directories): .git

【问题讨论】:

    标签: java linux git github


    【解决方案1】:

    确保在启动命令之前将目录更改为 git 存储库

    Process process = Runtime.getRuntime().exec("cd /path/to/repository; /usr/bin/git blame https://github.com/git/git/alloc.c > TestGit.txt");
    

    【讨论】:

    • @caarlos0 要么你不在 Linux / Unix 系统上,要么你的 shell 内置了命令 cd。如果是后者,请尝试启动/bin/bash -c,并将命令的其余部分作为“输入字符串”。
    【解决方案2】:

    我认为要让git blame 工作,您需要 存储库中。您需要进入存储库目录(这意味着您需要先检查它),然后运行:

    git blame alloc.c
    

    【讨论】:

    • 当我使用“cd”命令进入“git”文件夹时。然后,我在终端中使用“git blame alloc.c”,它可以工作。但是,我需要对在线文件执行责备命令。但是,它没有用
    • 你不能以你正在做的方式对在线文件使用 git blame ;您必须先签出存储库。
    • 好的,我把它克隆到我的电脑上。但是现在,当我使用“cd”命令进入目录(git),然后应用“blame”命令时,它就可以工作了。但是,当我使用文件“git blame /home/gh/git”的路径时,我得到了同样的错误???
    【解决方案3】:

    以下是在Java for linux中执行blame命令的正确语法:

    git --git-dir=/home/gh/git/.git --work-tree=/home/gh/git blame builtin/tag.c
    

    【讨论】:

      【解决方案4】:

      哈维尔方式:

      Process process = Runtime.getRuntime().exec("/usr/bin/git blame https://github.com/git/git/alloc.c > TestGit.txt", null, new File('/path/to/repository'));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-05-26
        • 1970-01-01
        • 2016-07-18
        • 2017-01-26
        • 2013-06-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多