[英]finding “active” branch in EGIT repository
我必須修改錯誤的程序/功能,這是org.eclipse.jgit的擴展
程序將覆蓋PushResultDialog的close方法,並將存儲庫傳遞給方法。 在這里我想找到實際上已被推送/簽出的分支。 我只對它的主人感興趣,否則我什么都不想要。 否則我需要推送文件的列表。
首先,程序如下所示:
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);
}
現在..只要eclipse中的工作流只是“ checkout master”“ pull”“ merge branch”“ push”
任何其他順序似乎都弄亂了集合中分支的順序,並且絆倒了這個“ else”:
if (sBranch.equalsIgnoreCase("master")) {
break;
} else {
return;
}
問題是:是否有簡便的方法來選擇正確的分支?
好的,我想我可以簡單地看一下集合中的HEAD:
e.getKey().startsWith(Constants.HEAD)
然后解析分支名稱,該分支名稱應該始終是簽出的分支,如果(在我的情況下)如果是主節點,我很高興。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.