я должен изменить неисправную программу/функцию, которая является расширение org.eclipse.jgitнайти «активный» филиал в хранилище EGit
программы переопределяет близкий метод PushResultDialog и передает Repository к метод. Здесь я хочу найти ветку, которая была фактически нажата/выписана. Меня интересует только его хозяин, если я не хочу ничего делать. else Мне нужен список нажатых файлов.
Сначала программа выглядит следующим образом:
head = repo.resolve(Constants.HEAD);
RevCommit commit = rw.parseCommit(head);
PersonIdent committerIdent = commit.getCommitterIdent();
sCommitter = committerIdent.getName();
String sBranch = "?";
for (Map.Entry<String, Ref> e : repo.getAllRefs().entrySet()) {
if (e.getKey().startsWith(Constants.R_HEADS)) {
Ref ref = e.getValue();
if (rw.isMergedInto(commit, rw.parseCommit(ref.getObjectId()))) {
sTemp = ref.getName();
int i = sTemp.lastIndexOf('/');
if (i == -1)
continue;
sBranch = sTemp.substring(i + 1);
System.out.println("Ref " + sBranch
+ " <contains> " + commit);
if (sBranch.equalsIgnoreCase("master")) {
break;
} else {
return;
}
}
}
}
RevCommit parent = rw.parseCommit(commit.getParent(0).getId());
DiffFormatter df = new DiffFormatter(
DisabledOutputStream.INSTANCE);
df.setRepository(repo);
df.setDiffComparator(RawTextComparator.DEFAULT);
df.setDetectRenames(true);
List<DiffEntry> diffs = df.scan(parent.getTree(),
commit.getTree());
for (DiffEntry diff : diffs) {
sTemp = diff.getNewPath();
pushedObjects.add(sTemp);
}
сейчас .. это работает до тех пор, как рабочий процесс в затмении просто «мастер фотографии» «тянуть» «сливать ветвь» «толчок»
любой другой заказ, кажется, возиться с порядком ветвей в наборе, и он натыкается на это «другой»:
if (sBranch.equalsIgnoreCase("master")) {
break;
} else {
return;
}
вопрос: есть ли способ eaasy выбрать правильную ветку?
Во-первых, вы не можете предположить, что неупорядоченный набор будет поддерживать любой порядок (поэтому он неупорядочен). И, во-вторых, вы не можете предположить, что есть ветвь, называемая «хозяин» (хотя это обычно так). – m0skit0
Я должен предположить, что есть филиал под названием master, он является стандартным в нашей компании и должен быть там. но вы правы, нет порядка, вот моя проблема. ATM Мне интересно, могу ли я получить последнюю фиксацию с помощью команды RevCommit commit = rw.parseCommit (repo.resolve (Constants.HEAD)), а затем просто заменить 'rw.isMergedInto (commit, rw.parseCommit (ref.getObjectId ())) 'с' commit.equals (rw.parseCommit (ref.getObjectId())) ' – Sirim