1
2
3
4
5
6
7
8
9
10
11
12 package org.eclipse.jgit.pgm;
13
14 import java.io.IOException;
15 import java.util.ArrayList;
16 import java.util.List;
17
18 import org.eclipse.jgit.revwalk.RevCommit;
19 import org.eclipse.jgit.revwalk.filter.RevFilter;
20 import org.kohsuke.args4j.Argument;
21 import org.kohsuke.args4j.Option;
22
23 @Command(usage = "usage_MergeBase")
24 class MergeBase extends TextBuiltin {
25 @Option(name = "--all", usage = "usage_displayAllPossibleMergeBases")
26 private boolean all;
27
28 @Argument(index = 0, metaVar = "metaVar_commitish", required = true)
29 void commit_0(final RevCommit c) {
30 commits.add(c);
31 }
32
33 @Argument(index = 1, metaVar = "metaVar_commitish", required = true)
34 private List<RevCommit> commits = new ArrayList<>();
35
36
37 @Override
38 protected void run() {
39 try {
40 for (RevCommit c : commits) {
41 argWalk.markStart(c);
42 }
43 argWalk.setRevFilter(RevFilter.MERGE_BASE);
44 int max = all ? Integer.MAX_VALUE : 1;
45 while (max-- > 0) {
46 final RevCommit b = argWalk.next();
47 if (b == null) {
48 break;
49 }
50 outw.println(b.getId().name());
51 }
52 } catch (IOException e) {
53 throw die(e.getMessage(), e);
54 }
55 }
56 }