Плагин Bitbucket Server: получить разницу коммитов - PullRequest
1 голос
/ 22 января 2020

Я пытаюсь написать плагин для Bitbucket Server, который будет проверять код, который был изменен. Чтобы иметь возможность сделать это, я хотел бы прочитать содержимое каждого коммита (измененные файлы, содержимое нового файла и содержимое старого файла).

Я просмотрел весь сервер Bitbucket Документация по плагину, но не удалось найти ни одного примера. Более того, я также исследовал каждый возможный объект, возвращаемый в обратных вызовах (см. Код ниже), и ни один из них не содержит того, что я ищу.

public class MyPreRepositoryHook implements PreRepositoryHook<RepositoryPushHookRequest> {

    @Nonnull
    @Override
    public RepositoryHookResult preUpdate(@Nonnull PreRepositoryHookContext context,
                                          @Nonnull RepositoryPushHookRequest request) {

        final RefChange next = request.getRefChanges().iterator().next();
        final SimpleMinimalRef ref = (SimpleMinimalRef) next.getRef();

        // ref has nothing useful :(

        return RepositoryHookResult.rejected("failed", "failed details");
    }

    @Override
    public void onEnd(@Nonnull PreRepositoryHookContext context, @Nonnull RepositoryPushHookRequest request, @Nonnull RepositoryHookResult result) {

    }
}

Как я могу получить содержимое каждого совершить?

1 Ответ

0 голосов
/ 22 января 2020

Посмотрите плагин FileSize / FileName Hook на github:

        Collection<RefChange> filteredRefChanges = refChanges.stream().filter(isNotDeleteRefChange).filter(isNotTagRefChange).collect(Collectors.toList());

        if(branchesPattern.isPresent()) {
            filteredRefChanges = filteredRefChanges.stream().filter(matchesBranchPattern(branchesPattern.get())).collect(Collectors.toList());
        }

        Iterable<Change> changes = changesetService.getChanges(filteredRefChanges, repository);

        Collection<String> filteredPaths = StreamSupport.stream(changes.spliterator(), false).filter(isNotDeleteChange).map(Functions.CHANGE_TO_PATH).filter(setting.getIncludePattern().asPredicate()).collect(Collectors.toList());

        if(setting.getExcludePattern().isPresent()) {
            Pattern excludePattern = setting.getExcludePattern().get();
            filteredPaths = filteredPaths.stream().filter(excludePattern.asPredicate().negate()).collect(Collectors.toList());
        }
...