【问题标题】:Display log information for a specific person in Git在 Git 中显示特定人员的日志信息
【发布时间】:2012-08-12 07:48:57
【问题描述】:

我正在使用 Java 来显示来自 Git 存储库的一些信息。我正在使用“Runtime.getRuntime().exec”来执行命令。

所以当我写的时候

Process process = Runtime.getRuntime().exec("git --git-dir=/home/gh/git/.git --work-tree=/home/gh/git log");

效果很好

但是,我需要获取特定人的日志信息,所以当我编写以下语句时,它没有显示任何结果

String activeDeveloper = "Carlos Rica";
Process process = Runtime.getRuntime().exec("git --git-dir=/home/ghadeer/git/.git --work-tree=/home/ghadeer/git log --author=" + activeDeveloper);

有谁知道这是怎么回事?

【问题讨论】:

  • 暂时不考虑Java,您将如何输入该命令来在命令行搜索特定的人?在尝试将其放入 Java 之前,请确保您可以在那里获得正确的结果。
  • 这是在终端输入命令的方式。 “git --git-dir=/home/ghadeer/git/.git --work-tree=/home/ghadeer/git log --author="Carlos Rica")。而且,它也很完美。但是, Java 中没有!!!
  • 您的开发者名称中有空格。如果这被传递给 exec 将被视为两个参数,并且如果您没有名为 Carlos 的开发人员(没有姓氏),git log 无法返回结果。您必须正确引用名称才能做到这一点。
  • String activeDeveloper = "\"Carlos Rica\"";
  • Jochen,你是对的;由于空间的原因,它不起作用。但是,即使名称有空格,我能做些什么让它工作?!!!

标签: java git


【解决方案1】:

按照mazaneichasuggestion,在作者姓名周围添加引号的常用方法是:

Process process = Runtime.getRuntime().exec("git --git-dir=/home/ghadeer/git/.git --work-tree=/home/ghadeer/git log --author=\"" + activeDeveloper + "\"");

但是,如果这仍然不起作用,您将需要标记所有命令,如“Runtime.getRuntime().exec()”SO 问题中所示。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-03
    • 1970-01-01
    • 1970-01-01
    • 2013-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多