Mercurial > jhg
comparison src/com/tmate/hgkit/ll/RevlogStream.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 | b79cf0118dd3 |
children | 9429c7bd1920 30bd38978846 |
comparison
equal
deleted
inserted
replaced
48:e34f90b9ded1 | 49:26e3eeaa3962 |
---|---|
71 } finally { | 71 } finally { |
72 daIndex.done(); | 72 daIndex.done(); |
73 } | 73 } |
74 } | 74 } |
75 | 75 |
76 public int findLocalRevisionNumber(Nodeid nodeid) { | 76 // Perhaps, RevlogStream should be limited to use of plain int revisions for access, |
77 // while Nodeids should be kept on the level up, in Revlog. Guess, Revlog better keep | |
78 // map of nodeids, and once this comes true, we may get rid of this method. | |
79 // Unlike its counterpart, Revlog#getLocalRevisionNumber, doesn't fail with exception if node not found, | |
80 // returns a predefined constant instead | |
81 /*package-local*/ int findLocalRevisionNumber(Nodeid nodeid) { | |
77 // XXX this one may be implemented with iterate() once there's mechanism to stop iterations | 82 // XXX this one may be implemented with iterate() once there's mechanism to stop iterations |
78 final int indexSize = revisionCount(); | 83 final int indexSize = revisionCount(); |
79 DataAccess daIndex = getIndexStream(); | 84 DataAccess daIndex = getIndexStream(); |
80 try { | 85 try { |
81 byte[] nodeidBuf = new byte[20]; | 86 byte[] nodeidBuf = new byte[20]; |
93 ex.printStackTrace(); // log error. FIXME better handling | 98 ex.printStackTrace(); // log error. FIXME better handling |
94 throw new IllegalStateException(ex); | 99 throw new IllegalStateException(ex); |
95 } finally { | 100 } finally { |
96 daIndex.done(); | 101 daIndex.done(); |
97 } | 102 } |
98 throw new IllegalArgumentException(String.format("%s doesn't represent a revision of %s", nodeid.toString(), indexFile.getName() /*XXX HgDataFile.getPath might be more suitable here*/)); | 103 return Integer.MIN_VALUE; |
99 } | 104 } |
100 | 105 |
101 | 106 |
102 private final int REVLOGV1_RECORD_SIZE = 64; | 107 private final int REVLOGV1_RECORD_SIZE = 64; |
103 | 108 |
141 } | 146 } |
142 | 147 |
143 daIndex.seek(inline ? (int) index.get(i).offset : i * REVLOGV1_RECORD_SIZE); | 148 daIndex.seek(inline ? (int) index.get(i).offset : i * REVLOGV1_RECORD_SIZE); |
144 for (; i <= end; i++ ) { | 149 for (; i <= end; i++ ) { |
145 long l = daIndex.readLong(); | 150 long l = daIndex.readLong(); |
151 @SuppressWarnings("unused") | |
146 long offset = l >>> 16; | 152 long offset = l >>> 16; |
153 @SuppressWarnings("unused") | |
147 int flags = (int) (l & 0X0FFFF); | 154 int flags = (int) (l & 0X0FFFF); |
148 int compressedLen = daIndex.readInt(); | 155 int compressedLen = daIndex.readInt(); |
149 int actualLen = daIndex.readInt(); | 156 int actualLen = daIndex.readInt(); |
150 int baseRevision = daIndex.readInt(); | 157 int baseRevision = daIndex.readInt(); |
151 int linkRevision = daIndex.readInt(); | 158 int linkRevision = daIndex.readInt(); |
231 inline = (versionField & INLINEDATA) != 0; | 238 inline = (versionField & INLINEDATA) != 0; |
232 long offset = 0; // first offset is always 0, thus Hg uses it for other purposes | 239 long offset = 0; // first offset is always 0, thus Hg uses it for other purposes |
233 while(true) { | 240 while(true) { |
234 int compressedLen = da.readInt(); | 241 int compressedLen = da.readInt(); |
235 // 8+4 = 12 bytes total read here | 242 // 8+4 = 12 bytes total read here |
243 @SuppressWarnings("unused") | |
236 int actualLen = da.readInt(); | 244 int actualLen = da.readInt(); |
237 int baseRevision = da.readInt(); | 245 int baseRevision = da.readInt(); |
238 // 12 + 8 = 20 bytes read here | 246 // 12 + 8 = 20 bytes read here |
239 // int linkRevision = di.readInt(); | 247 // int linkRevision = di.readInt(); |
240 // int parent1Revision = di.readInt(); | 248 // int parent1Revision = di.readInt(); |