Mercurial > jhg
comparison src/org/tmatesoft/hg/repo/HgMergeState.java @ 285:6dbbc53fc46d
Use Path instead of plain String for manifest file names
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Sat, 03 Sep 2011 21:46:13 +0200 |
parents | 7232b94f2ae3 |
children | f74e36b7344b |
comparison
equal
deleted
inserted
replaced
284:7232b94f2ae3 | 285:6dbbc53fc46d |
---|---|
97 if (!f.canRead()) { | 97 if (!f.canRead()) { |
98 // empty state | 98 // empty state |
99 return; | 99 return; |
100 } | 100 } |
101 Pool<Nodeid> nodeidPool = new Pool<Nodeid>(); | 101 Pool<Nodeid> nodeidPool = new Pool<Nodeid>(); |
102 Pool<String> fnamePool = new Pool<String>(); | 102 Pool<Path> fnamePool = new Pool<Path>(); |
103 Pair<Nodeid, Nodeid> wcParents = repo.getWorkingCopyParents(); | 103 Pair<Nodeid, Nodeid> wcParents = repo.getWorkingCopyParents(); |
104 wcp1 = nodeidPool.unify(wcParents.first()); wcp2 = nodeidPool.unify(wcParents.second()); | 104 wcp1 = nodeidPool.unify(wcParents.first()); wcp2 = nodeidPool.unify(wcParents.second()); |
105 ArrayList<Entry> result = new ArrayList<Entry>(); | 105 ArrayList<Entry> result = new ArrayList<Entry>(); |
106 PathPool pathPool = new PathPool(new PathRewrite.Empty()); | 106 // FIXME need to settle use of Pool<Path> and PathPool |
107 // latter is pool that can create objects on demand, former is just cache | |
108 PathPool pathPool = new PathPool(new PathRewrite.Empty()); | |
107 final ManifestRevision m1 = new ManifestRevision(nodeidPool, fnamePool); | 109 final ManifestRevision m1 = new ManifestRevision(nodeidPool, fnamePool); |
108 final ManifestRevision m2 = new ManifestRevision(nodeidPool, fnamePool); | 110 final ManifestRevision m2 = new ManifestRevision(nodeidPool, fnamePool); |
109 if (!wcp2.isNull()) { | 111 if (!wcp2.isNull()) { |
110 final int rp2 = repo.getChangelog().getLocalRevision(wcp2); | 112 final int rp2 = repo.getChangelog().getLocalRevision(wcp2); |
111 repo.getManifest().walk(rp2, rp2, m2); | 113 repo.getManifest().walk(rp2, rp2, m2); |
115 stateParent = nodeidPool.unify(Nodeid.fromAscii(s)); | 117 stateParent = nodeidPool.unify(Nodeid.fromAscii(s)); |
116 final int rp1 = repo.getChangelog().getLocalRevision(stateParent); | 118 final int rp1 = repo.getChangelog().getLocalRevision(stateParent); |
117 repo.getManifest().walk(rp1, rp1, m1); | 119 repo.getManifest().walk(rp1, rp1, m1); |
118 while ((s = br.readLine()) != null) { | 120 while ((s = br.readLine()) != null) { |
119 String[] r = s.split("\\00"); | 121 String[] r = s.split("\\00"); |
120 Nodeid nidP1 = m1.nodeid(r[3]); | 122 Path p1fname = pathPool.path(r[3]); |
123 Nodeid nidP1 = m1.nodeid(p1fname); | |
121 Nodeid nidCA = nodeidPool.unify(Nodeid.fromAscii(r[5])); | 124 Nodeid nidCA = nodeidPool.unify(Nodeid.fromAscii(r[5])); |
122 HgFileRevision p1 = new HgFileRevision(repo, nidP1, pathPool.path(r[3])); | 125 HgFileRevision p1 = new HgFileRevision(repo, nidP1, p1fname); |
123 HgFileRevision ca; | 126 HgFileRevision ca; |
124 if (nidCA == nidP1 && r[3].equals(r[4])) { | 127 if (nidCA == nidP1 && r[3].equals(r[4])) { |
125 ca = p1; | 128 ca = p1; |
126 } else { | 129 } else { |
127 ca = new HgFileRevision(repo, nidCA, pathPool.path(r[4])); | 130 ca = new HgFileRevision(repo, nidCA, pathPool.path(r[4])); |
128 } | 131 } |
129 HgFileRevision p2; | 132 HgFileRevision p2; |
130 if (!wcp2.isNull() || !r[6].equals(r[4])) { | 133 if (!wcp2.isNull() || !r[6].equals(r[4])) { |
131 Nodeid nidP2 = m2.nodeid(r[6]); | 134 final Path p2fname = pathPool.path(r[6]); |
135 Nodeid nidP2 = m2.nodeid(p2fname); | |
132 if (nidP2 == null) { | 136 if (nidP2 == null) { |
133 assert false : "There's not enough information (or I don't know where to look) in merge/state to find out what's the second parent"; | 137 assert false : "There's not enough information (or I don't know where to look) in merge/state to find out what's the second parent"; |
134 nidP2 = NULL; | 138 nidP2 = NULL; |
135 } | 139 } |
136 p2 = new HgFileRevision(repo, nidP2, pathPool.path(r[6])); | 140 p2 = new HgFileRevision(repo, nidP2, p2fname); |
137 } else { | 141 } else { |
138 // no second parent known. no idea what to do here, assume linear merge, use common ancestor as parent | 142 // no second parent known. no idea what to do here, assume linear merge, use common ancestor as parent |
139 p2 = ca; | 143 p2 = ca; |
140 } | 144 } |
141 final Kind k; | 145 final Kind k; |