Я использую jgit API. Мне необходимо открывать пользовательский просмотрщик различий всякий раз, когда в команде извлечения или слияния возникает различие, и для этого мне нужны как локальные, так и удаленные файлы. Как я могу скачать последний файл удаленного тянуть. Я попробовал приведенный ниже код, но он загружает только последний файл коммита, но мне нужен последний удаленный файл коммита.
public void downloadSourceFile() throws Exception {
Repository repository = git.getRepository();
ObjectId lastCommitId = repository.resolve("master_beta");
// a RevWalk allows to walk over commits based on some filtering that is defined
RevWalk revWalk = new RevWalk(repository);
RevCommit commit = revWalk.parseCommit(lastCommitId);
// and using commit's tree find the path
RevTree tree = commit.getTree();
// now try to find a specific file
TreeWalk treeWalk = new TreeWalk(repository);
treeWalk.addTree(tree);
treeWalk.setRecursive(true);
treeWalk.setFilter(PathFilter.create("Sample467/test468/test468.idsng"));
if (!treeWalk.next()) {
throw new IllegalStateException("Unable to download file.");
}
ObjectLoader loader = repository.open(treeWalk.getObjectId(0));
System.out.println("File Size : " + loader.getSize() + "bytes");
// and then one can the loader to read the file
//loader.copyTo(System.out);
File file = new File("..path\\d1.html");
try (FileOutputStream fop = new FileOutputStream(file)) {
// if file doesn't exists, then create it
if (!file.exists()) {
file.createNewFile();
}
byte[] contentInBytes = loader.getBytes();
fop.write(contentInBytes);
fop.flush();
fop.close();
System.out.println("Done");
} catch (IOException e) {
e.printStackTrace();
}
revWalk.dispose();
}