git custom diff viewer - PullRequest
       7

git custom diff viewer

0 голосов
/ 14 октября 2019

Я использую 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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...