Mercurial > jhg
comparison 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 |
comparison
equal
deleted
inserted
replaced
8:a78c980749e3 | 9:d6d2a630f4a6 |
---|---|
92 } catch (IOException ex) { | 92 } catch (IOException ex) { |
93 ex.printStackTrace(); // FIXME log | 93 ex.printStackTrace(); // FIXME log |
94 } | 94 } |
95 } | 95 } |
96 | 96 |
97 // FIXME document what path argument is, whether it includes .i or .d, and whether it's 'normalized' (slashes) or not. | |
98 // since .hg/store keeps both .i files and files without extension (e.g. fncache), guees, for data == false | |
99 // we shall assume path has extension | |
97 // FIXME much more to be done, see store.py:_hybridencode | 100 // FIXME much more to be done, see store.py:_hybridencode |
98 // @see http://mercurial.selenic.com/wiki/CaseFoldingPlan | 101 // @see http://mercurial.selenic.com/wiki/CaseFoldingPlan |
102 @Override | |
99 protected String toStoragePath(String path, boolean data) { | 103 protected String toStoragePath(String path, boolean data) { |
100 path = normalize(path); | 104 path = normalize(path); |
101 final String STR_STORE = "store/"; | 105 final String STR_STORE = "store/"; |
102 final String STR_DATA = "data/"; | 106 final String STR_DATA = "data/"; |
103 final String STR_DH = "dh/"; | 107 final String STR_DH = "dh/"; |
181 } | 185 } |
182 | 186 |
183 private static char[] toHexByte(int ch, char[] buf) { | 187 private static char[] toHexByte(int ch, char[] buf) { |
184 assert buf.length > 1; | 188 assert buf.length > 1; |
185 final String hexDigits = "0123456789abcdef"; | 189 final String hexDigits = "0123456789abcdef"; |
186 buf[0] = hexDigits.charAt((ch & 0x00F0) >> 4); | 190 buf[0] = hexDigits.charAt((ch & 0x00F0) >>> 4); |
187 buf[1] = hexDigits.charAt(ch & 0x0F); | 191 buf[1] = hexDigits.charAt(ch & 0x0F); |
188 return buf; | 192 return buf; |
189 } | 193 } |
190 | 194 |
195 // TODO handle . and .. (although unlikely to face them from GUI client) | |
191 private static String normalize(String path) { | 196 private static String normalize(String path) { |
192 path = path.replace('\\', '/').replace("//", "/"); | 197 path = path.replace('\\', '/').replace("//", "/"); |
193 if (path.startsWith("/")) { | 198 if (path.startsWith("/")) { |
194 path = path.substring(1); | 199 path = path.substring(1); |
195 } | 200 } |