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我喜歡你的兩個想法。 –