Mercurial > hg4j
comparison src/org/tmatesoft/hg/repo/HgDirstate.java @ 227:0fd10e5016dd
IOException on empty repository with 40-byte dirstate
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Wed, 25 May 2011 13:13:36 +0200 |
parents | 8248aae33f7d |
children | 1792b37650f2 |
comparison
equal
deleted
inserted
replaced
226:26ad7827a62d | 227:0fd10e5016dd |
---|---|
73 try { | 73 try { |
74 // XXX skip(40) if we don't need these? | 74 // XXX skip(40) if we don't need these? |
75 byte[] parents = new byte[40]; | 75 byte[] parents = new byte[40]; |
76 da.readBytes(parents, 0, 40); | 76 da.readBytes(parents, 0, 40); |
77 parents = null; | 77 parents = null; |
78 do { | 78 // hg init; hg up produces an empty repository where dirstate has parents (40 bytes) only |
79 while (!da.isEmpty()) { | |
79 final byte state = da.readByte(); | 80 final byte state = da.readByte(); |
80 final int fmode = da.readInt(); | 81 final int fmode = da.readInt(); |
81 final int size = da.readInt(); | 82 final int size = da.readInt(); |
82 final int time = da.readInt(); | 83 final int time = da.readInt(); |
83 final int nameLen = da.readInt(); | 84 final int nameLen = da.readInt(); |
104 } else if (state == 'm') { | 105 } else if (state == 'm') { |
105 merged.put(r.name1, r); | 106 merged.put(r.name1, r); |
106 } else { | 107 } else { |
107 // FIXME log error? | 108 // FIXME log error? |
108 } | 109 } |
109 } while (!da.isEmpty()); | 110 } |
110 } catch (IOException ex) { | 111 } catch (IOException ex) { |
111 ex.printStackTrace(); // FIXME log error, clean dirstate? | 112 ex.printStackTrace(); // FIXME log error, clean dirstate? |
112 } finally { | 113 } finally { |
113 da.done(); | 114 da.done(); |
114 } | 115 } |