使用java程序的git blame命令问题

时间:2015-07-03 05:30:55

标签: java git runtime

我正在尝试使用Windows上的java程序在git命令下运行。

 git --git-dir D:\code_coverage\.git blame  'src/RunCodeCoverage.java'
 | grep e4ecfbe | awk '{print $7}'

它给了我错误:

fatal: cannot stat path '$7}'': No such file or directory

从命令提示符运行此命令时,它会根据需要提供结果。

请帮忙!

1 个答案:

答案 0 :(得分:1)

在Windows中的CMD上,我可以使用 git --git-dir D:\code_coverage\.git blame 'src/RunCodeCoverage.java' | grep e4ecfbe | awk "{print $7}" 参数的双引号使其工作:

awk.exe

请注意,我的String commandToBeExecuted="git --git-dir D:\code_coverage\.git blame 'src/RunCodeCoverage.java' | grep e4ecfbe | awk "{print $7}"'"; Process p = Runtime.getRuntime().exec(commandToBeExecuted); 来自Gnu On Windows

OP提到在Java中使用该命令:

Process p = Runtime.getRuntime().exec(new String[]{"cmd", "/c", commandToBeExecuted);

但是你永远不会将所有参数作为单个字符串传递 使用数组,如" Using Quotes within getRuntime().exec"并在" How to make pipes work with Runtime.exec()?"

commandToBeExecuted

转义 commandToBeExecuted = "git --git-dir D:\code_coverage\.git blame 'src/RunCodeCoverage.java' | grep e4ecfbe | awk \"{print $7}\"" 中的双引号:

using (var ctx = new SchoolDBEntities())
 {

     var studentList = ctx.Students.SqlQuery("Select * from Student").ToList<Student>();

}