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));
これは、テキスト ファイルに適しています。ただし、リポジトリにはバイナリ ファイルがあります。このコードを実行すると、どういうわけかファイルが壊れます。(繰り返しますが、これはテキスト ファイルでは問題なく機能します)。リポジトリからバイナリ ファイルとテキスト ファイルの両方のファイル コンテンツを取得するにはどうすればよいですか (任意のコンテンツ エンコーディングを使用)。
出力を読み取るために使用する方法は、十分に一般的ではないと思います。