Найти коммиты в одной ветке, которых нет в другой, с помощью JGit - PullRequest
0 голосов
/ 12 ноября 2019

Я пытаюсь найти коммиты на ветке foo, которых нет на master. У меня это работает для простых случаев, но как только новые изменения были объединены из master в foo, он ломается.

Более подробно:

  • Если у вас естькоммиты A, B и C на master
  • , затем вы создаете ветку foo и добавляете коммиты D и E
  • , затем вы создаете коммит F на master
  • затем вы сливаете F из master в foo (используя коммит слияния)

, теперь пытаясь получить базу слияния, которая возвращает F вместо C. Поэтому я не могу перебирать коммиты от C до foo головы (давая C, D, E, F, которые я затем сужу до D & E с использованием isMergedInto)

public RevCommit findMergeBase(ObjectId foo, ObjectId bar) throws MissingObjectException,
        IncorrectObjectTypeException, IOException {
    RevWalk walk = null;

    try {
        walk = new RevWalk(repo);
        RevCommit fooHead = walk.parseCommit(foo);
        RevCommit barHead = walk.parseCommit(bar);

        walk.setRevFilter(RevFilter.MERGE_BASE);
        walk.markStart(fooHead);
        walk.markStart(barHead);

        RevCommit base = null;
        while (true) {
            RevCommit commit = walk.next();
            if (commit == null)
                break;

            base = commit;
        }

        return base;
    }
    finally {
        if (walk != null) {
            walk.reset();
            walk.close();
            walk.dispose();
        }
    }
}

1 Ответ

0 голосов
/ 13 ноября 2019

Похоже, проблема, возможно, заключалась в том, что я создал функциональную ветвь удаленной главной ветки? Так что не могу понять, как ветвь функций связана с моим локальным мастером? Как только я обновил свою локальную главную ветку, все заработало как положено.

...