Репозиторий клонов JGit отображает прогресс во время выполнения - PullRequest
0 голосов
/ 16 мая 2019

Я знаю, что он похож на этот: Java JGit - получение процента прогресса клонирования

Но это не отвечает на мой вопрос, и у меня недостаточно репутации, чтобы комментировать это:)

У меня есть команда клонирования JGit:

Git.cloneRepository()
        .setURI(uri)
        .setDirectory(Paths.get(path).toFile())
        .setProgressMonitor(new TextProgressMonitor(writer))
        .call();

Метрики верны. Просто он выводит результат (этап получения объектов), когда он уже завершен (в одном пакете). То, что я хочу, это видеть прогресс во время выполнения (в процентах), чтобы я мог отобразить его в моем индикаторе выполнения.

Я пытался настроить флеш в своем писателе, но это не помогло (возможно, я делаю это неправильно). Кажется, что ProgressMonitor просто дает это так, и я ничего не могу с этим поделать.

git clone --progress - хороший пример того, чего я хочу достичь. Пожалуйста, помогите мне, ребята.

1 Ответ

0 голосов
/ 18 мая 2019

Вероятно, вам потребуется реализовать собственный ProgressMonitor, BatchingProgressMonitor за TextProgressMonitor задерживает отчеты о прогрессе и объединяет некоторые обновления в меньший объем вывода.

Интерфейс не является сложным, например, следующие распечатывает обновления для каждого переданного объекта / файла:

    .setProgressMonitor(new ProgressMonitor() {
        @Override
        public void start(int totalTasks) {
            System.out.println("Starting work on " + totalTasks + " tasks");
        }

        @Override
        public void beginTask(String title, int totalWork) {
            System.out.println("Start " + title + ": " + totalWork);
        }

        @Override
        public void update(int completed) {
            System.out.print(completed + "-");
        }

        @Override
        public void endTask() {
            System.out.println("Done");
        }

        @Override
        public boolean isCancelled() {
            return false;
        }
    })
...