0
我试图从Git中检索文件的单个修订版本。我做了一些调查,发现最好的方法是git show HEAD[x]:[filename]
,其中[x]
是从上一次修订版本向后退订版,[filename]
是该文件的名称。我的代码看起来像这样(在Java中):从进程输出中读取二进制文本和文本
public static String runProcess2(String executable, String parameter) {
try {
Runtime rt = Runtime.getRuntime();
String path = String.format("%s %s", executable, parameter);
Process pr = rt.exec(path);
BufferedReader input = new BufferedReader(new InputStreamReader(
pr.getInputStream()));
String line = null;
StringBuilder sb = new StringBuilder();
while ((line = input.readLine()) != null) {
sb.append(line + NL);
}
pr.waitFor();
return sb.toString();
} catch (Exception e) {
return null;
}
}
我与这行代码运行:
return Utilities.runProcess("git", String.format(
"--git-dir=%s\\.git --work-tree=%s show HEAD%s:%s", path, path,
rev, filePath));
这非常适用于文本文件。但是在存储库中有二进制文件。如果我运行这个代码,它会破坏文件。 (再次,这适用于文本文件)。如何从存储库中检索二进制文件和文本文件(使用任何内容编码)的文件内容?
我认为我用于读取输出的方法不够一般。
a)将'git'命令的输出重定向到临时文件,然后从文件 中读取数据b)获取一些Java的GIT绑定并使用本地Java代码访问repo内容 –
您是否考虑过使用jgit? – fge
@ zed_0xff我喜欢你的两个想法。 –