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 public class AddToBitmapFilter extends RevFilter {
32 private final BitmapBuilder bitmap;
33
34
35
36
37
38
39 public AddToBitmapFilter(BitmapBuilder bitmap) {
40 this.bitmap = bitmap;
41 }
42
43
44 @Override
45 public final boolean include(RevWalk walker, RevCommit cmit) {
46 Bitmap visitedBitmap;
47
48 if (bitmap.contains(cmit)) {
49
50 } else if ((visitedBitmap = bitmap.getBitmapIndex()
51 .getBitmap(cmit)) != null) {
52 bitmap.or(visitedBitmap);
53 } else {
54 bitmap.addObject(cmit, Constants.OBJ_COMMIT);
55 return true;
56 }
57
58 for (RevCommit p : cmit.getParents()) {
59 p.add(RevFlag.SEEN);
60 }
61 return false;
62 }
63
64
65 @Override
66 public final RevFilter clone() {
67 throw new UnsupportedOperationException();
68 }
69
70
71 @Override
72 public final boolean requiresCommitBody() {
73 return false;
74 }
75 }