]> source.dussan.org Git - jgit.git/commitdiff
reftable: add some more comments 88/146788/13
authorHan-Wen Nienhuys <hanwen@google.com>
Mon, 19 Aug 2019 09:25:58 +0000 (11:25 +0200)
committerHan-Wen Nienhuys <hanwen@google.com>
Mon, 19 Aug 2019 09:25:58 +0000 (11:25 +0200)
Change-Id: I95208f7a05919b5019895cf41ae378c97da6e680
Signed-off-by: Han-Wen Nienhuys <hanwen@google.com>
org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/BlockReader.java
org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftable/ReftableReader.java

index 44529bfff252bc6b5f34f48377265cee69dcb336..f9e184c99e854cb10127db4a97179d2f9075f941 100644 (file)
@@ -84,7 +84,11 @@ import org.eclipse.jgit.util.LongList;
 import org.eclipse.jgit.util.NB;
 import org.eclipse.jgit.util.RawParseUtils;
 
-/** Reads a single block for {@link ReftableReader}. */
+/**
+ * Reads a single block for {@link ReftableReader}. Instances are tied to a
+ * specific block in the file so are not reused for other blocks. Instances hold
+ * an offset into the block.
+ */
 class BlockReader {
        private byte blockType;
        private long endPosition;
@@ -141,6 +145,8 @@ class BlockReader {
                return RawParseUtils.decode(UTF_8, nameBuf, 0, len);
        }
 
+       // Matches the key against a name or a prefix. For reflogs, only the
+       // refname is matched, and the updateIndex suffix is ignored.
        boolean match(byte[] match, boolean matchIsPrefix) {
                int len = nameLen;
                if (blockType == LOG_BLOCK_TYPE) {
index 226e675e41a7dcc9fafd095e7b241948a33fc1d7..4f0ff2d1d1796dfd432cb1d607f6ba7d1b25a27e 100644 (file)
@@ -256,8 +256,8 @@ public class ReftableReader extends Reftable {
                        return block;
                }
                if (blockType == LOG_BLOCK_TYPE) {
-                       // No index. Log blocks are irregularly sized, so we can't do binary search
-                       // between blocks. Scan over blocks instead.
+                       // No index. Log blocks are irregularly sized, so we can't do binary
+                       // search between blocks. Scan over blocks instead.
                        BlockReader block = readBlock(startPos, endPos);
 
                        for (;;) {
@@ -555,12 +555,20 @@ public class ReftableReader extends Reftable {
        private class LogCursorImpl extends LogCursor {
                private final long scanEnd;
                private final byte[] match;
-
+           
                private String refName;
                private long updateIndex;
                private ReflogEntry entry;
                BlockReader block;
 
+               /**
+                * Scans logs from this table until scanEnd position.
+                *
+                * @param scanEnd
+                *            end of the log data in the reftable.
+                * @param match
+                *            if non-null, limits the scan to precisely that refname.
+                */
                LogCursorImpl(long scanEnd, byte[] match) {
                        this.scanEnd = scanEnd;
                        this.match = match;