0

Git からファイルの 1 つのリビジョンを取得しようとしています。私はいくつかの調査を行いましたが、私が見つけた最良の方法は、最後のリビジョンからさかのぼるリビジョンが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