0

我正在尝试从 Git 检索文件的单个修订版。我做了一些研究,我发现最好的方法是从上一个修订版向后退的修订版在哪里,并且git show HEAD[x]:[filename]是文件的名称。我的代码看起来像这样(在 Java 中):[x][filename]

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));

这适用于文本文件。但是,存储库中有二进制文件。如果我运行这段代码,它会以某种方式破坏文件。(同样,这适用于文本文件)。如何从存储库中检索二进制文件和文本文件(使用任何内容编码)的文件内容?

我认为我用于读取输出的方法不够通用。

4

0 回答 0