diff src/com/tmate/hgkit/ll/LocalHgRepo.java @ 9:d6d2a630f4a6

Access to underlaying file data wrapped into own Access object, implemented with FileChannel and ByteBuffer
author Artem Tikhomirov <tikhomirov.artem@gmail.com>
date Sat, 25 Dec 2010 04:45:59 +0100
parents a78c980749e3
children 382cfe9463db
line wrap: on
line diff
--- a/src/com/tmate/hgkit/ll/LocalHgRepo.java	Thu Dec 23 01:31:40 2010 +0100
+++ b/src/com/tmate/hgkit/ll/LocalHgRepo.java	Sat Dec 25 04:45:59 2010 +0100
@@ -94,8 +94,12 @@
 		}
 	}
 
+	// FIXME document what path argument is, whether it includes .i or .d, and whether it's 'normalized' (slashes) or not.
+	// since .hg/store keeps both .i files and files without extension (e.g. fncache), guees, for data == false 
+	// we shall assume path has extension
 	// FIXME much more to be done, see store.py:_hybridencode
 	// @see http://mercurial.selenic.com/wiki/CaseFoldingPlan
+	@Override
 	protected String toStoragePath(String path, boolean data) {
 		path = normalize(path);
 		final String STR_STORE = "store/";
@@ -183,11 +187,12 @@
 	private static char[] toHexByte(int ch, char[] buf) {
 		assert buf.length > 1;
 		final String hexDigits = "0123456789abcdef";
-		buf[0] = hexDigits.charAt((ch & 0x00F0) >> 4);
+		buf[0] = hexDigits.charAt((ch & 0x00F0) >>> 4);
 		buf[1] = hexDigits.charAt(ch & 0x0F);
 		return buf;
 	}
 
+	// TODO handle . and .. (although unlikely to face them from GUI client)
 	private static String normalize(String path) {
 		path = path.replace('\\', '/').replace("//", "/");
 		if (path.startsWith("/")) {