Mercurial > jhg
comparison src/com/tmate/hgkit/ll/Revlog.java @ 49:26e3eeaa3962
branch and user filtering for log operation
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Sat, 15 Jan 2011 01:15:38 +0100 |
parents | 4e9b66b07a28 |
children | 9429c7bd1920 576d6e8a09f6 |
comparison
equal
deleted
inserted
replaced
48:e34f90b9ded1 | 49:26e3eeaa3962 |
---|---|
33 | 33 |
34 public int getRevisionCount() { | 34 public int getRevisionCount() { |
35 return content.revisionCount(); | 35 return content.revisionCount(); |
36 } | 36 } |
37 | 37 |
38 public int getLocalRevisionNumber(Nodeid nid) { | |
39 int revision = content.findLocalRevisionNumber(nid); | |
40 if (revision == Integer.MIN_VALUE) { | |
41 throw new IllegalArgumentException(String.format("%s doesn't represent a revision of %s", nid.toString(), this /*XXX HgDataFile.getPath might be more suitable here*/)); | |
42 } | |
43 return revision; | |
44 } | |
45 | |
38 // Till now, i follow approach that NULL nodeid is never part of revlog | 46 // Till now, i follow approach that NULL nodeid is never part of revlog |
39 public boolean isKnown(Nodeid nodeid) { | 47 public boolean isKnown(Nodeid nodeid) { |
40 try { | 48 final int rn = content.findLocalRevisionNumber(nodeid); |
41 int revision = content.findLocalRevisionNumber(nodeid); | 49 if (Integer.MIN_VALUE == rn) { |
42 return revision >= 0 && revision < getRevisionCount(); | |
43 } catch (IllegalArgumentException ex) { | |
44 // FIXME bad way to figure out if nodeid is from this revlog | |
45 return false; | 50 return false; |
46 } | 51 } |
52 if (rn < 0 || rn >= content.revisionCount()) { | |
53 // Sanity check | |
54 throw new IllegalStateException(); | |
55 } | |
56 return true; | |
47 } | 57 } |
58 | |
48 /** | 59 /** |
49 * Access to revision data as is (decompressed, but otherwise unprocessed, i.e. not parsed for e.g. changeset or manifest entries) | 60 * Access to revision data as is (decompressed, but otherwise unprocessed, i.e. not parsed for e.g. changeset or manifest entries) |
50 * @param nodeid | 61 * @param nodeid |
51 */ | 62 */ |
52 public byte[] content(Nodeid nodeid) { | 63 public byte[] content(Nodeid nodeid) { |
53 int revision = content.findLocalRevisionNumber(nodeid); | 64 return content(getLocalRevisionNumber(nodeid)); |
54 return content(revision); | |
55 } | 65 } |
56 | 66 |
57 /** | 67 /** |
58 * @param revision - repo-local index of this file change (not a changelog revision number!) | 68 * @param revision - repo-local index of this file change (not a changelog revision number!) |
59 */ | 69 */ |
138 | 148 |
139 // null if none | 149 // null if none |
140 public Nodeid firstParent(Nodeid nid) { | 150 public Nodeid firstParent(Nodeid nid) { |
141 return firstParent.get(nid); | 151 return firstParent.get(nid); |
142 } | 152 } |
153 | |
154 // never null, Nodeid.NULL if none known | |
155 public Nodeid safeFirstParent(Nodeid nid) { | |
156 Nodeid rv = firstParent(nid); | |
157 return rv == null ? Nodeid.NULL : rv; | |
158 } | |
143 | 159 |
144 public Nodeid secondParent(Nodeid nid) { | 160 public Nodeid secondParent(Nodeid nid) { |
145 return secondParent.get(nid); | 161 return secondParent.get(nid); |
162 } | |
163 | |
164 public Nodeid safeSecondParent(Nodeid nid) { | |
165 Nodeid rv = secondParent(nid); | |
166 return rv == null ? Nodeid.NULL : rv; | |
146 } | 167 } |
147 | 168 |
148 public boolean appendParentsOf(Nodeid nid, Collection<Nodeid> c) { | 169 public boolean appendParentsOf(Nodeid nid, Collection<Nodeid> c) { |
149 Nodeid p1 = firstParent(nid); | 170 Nodeid p1 = firstParent(nid); |
150 boolean modified = false; | 171 boolean modified = false; |