1
2
3
4
5
6
7
8
9
10
11 package org.eclipse.jgit.internal.revwalk;
12
13 import org.eclipse.jgit.lib.BitmapIndex.Bitmap;
14 import org.eclipse.jgit.lib.BitmapIndex.BitmapBuilder;
15 import org.eclipse.jgit.lib.Constants;
16 import org.eclipse.jgit.revwalk.filter.RevFilter;
17 import org.eclipse.jgit.revwalk.RevWalk;
18 import org.eclipse.jgit.revwalk.RevCommit;
19 import org.eclipse.jgit.revwalk.RevFlag;
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 public class AddUnseenToBitmapFilter extends RevFilter {
36 private final BitmapBuilder seen;
37 private final BitmapBuilder bitmap;
38
39
40
41
42
43
44
45
46 public AddUnseenToBitmapFilter(BitmapBuilder seen, BitmapBuilder bitmap) {
47 this.seen = seen;
48 this.bitmap = bitmap;
49 }
50
51
52 @Override
53 public final boolean include(RevWalk walker, RevCommit cmit) {
54 Bitmap visitedBitmap;
55
56 if (seen.contains(cmit) || bitmap.contains(cmit)) {
57
58 } else if ((visitedBitmap = bitmap.getBitmapIndex()
59 .getBitmap(cmit)) != null) {
60 bitmap.or(visitedBitmap);
61 } else {
62 bitmap.addObject(cmit, Constants.OBJ_COMMIT);
63 return true;
64 }
65
66 for (RevCommit p : cmit.getParents()) {
67 p.add(RevFlag.SEEN);
68 }
69 return false;
70 }
71
72
73 @Override
74 public final RevFilter clone() {
75 throw new UnsupportedOperationException();
76 }
77
78
79 @Override
80 public final boolean requiresCommitBody() {
81 return false;
82 }
83 }