Mercurial > hg4j
comparison src/org/tmatesoft/hg/repo/HgRepository.java @ 234:b2cfbe46f9b6
HgTags got TagInfo to access tags. Tags are read from all branches/revisions now, not only working copy
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Tue, 07 Jun 2011 04:28:32 +0200 |
parents | 1792b37650f2 |
children | fd845a53f53d |
comparison
equal
deleted
inserted
replaced
233:1d389c0cb0a5 | 234:b2cfbe46f9b6 |
---|---|
16 */ | 16 */ |
17 package org.tmatesoft.hg.repo; | 17 package org.tmatesoft.hg.repo; |
18 | 18 |
19 import java.io.File; | 19 import java.io.File; |
20 import java.io.IOException; | 20 import java.io.IOException; |
21 import java.io.StringReader; | |
21 import java.lang.ref.SoftReference; | 22 import java.lang.ref.SoftReference; |
23 import java.nio.charset.Charset; | |
22 import java.util.ArrayList; | 24 import java.util.ArrayList; |
23 import java.util.Collections; | 25 import java.util.Collections; |
24 import java.util.HashMap; | 26 import java.util.HashMap; |
25 import java.util.List; | 27 import java.util.List; |
26 | 28 |
29 import org.tmatesoft.hg.core.HgDataStreamException; | |
30 import org.tmatesoft.hg.internal.ByteArrayChannel; | |
27 import org.tmatesoft.hg.internal.ConfigFile; | 31 import org.tmatesoft.hg.internal.ConfigFile; |
28 import org.tmatesoft.hg.internal.DataAccessProvider; | 32 import org.tmatesoft.hg.internal.DataAccessProvider; |
29 import org.tmatesoft.hg.internal.Experimental; | 33 import org.tmatesoft.hg.internal.Experimental; |
30 import org.tmatesoft.hg.internal.Filter; | 34 import org.tmatesoft.hg.internal.Filter; |
31 import org.tmatesoft.hg.internal.RequiresFile; | 35 import org.tmatesoft.hg.internal.RequiresFile; |
32 import org.tmatesoft.hg.internal.RevlogStream; | 36 import org.tmatesoft.hg.internal.RevlogStream; |
37 import org.tmatesoft.hg.util.CancelledException; | |
33 import org.tmatesoft.hg.util.Path; | 38 import org.tmatesoft.hg.util.Path; |
34 import org.tmatesoft.hg.util.PathRewrite; | 39 import org.tmatesoft.hg.util.PathRewrite; |
35 import org.tmatesoft.hg.util.ProgressSupport; | 40 import org.tmatesoft.hg.util.ProgressSupport; |
36 | 41 |
37 | 42 |
140 return this.manifest; | 145 return this.manifest; |
141 } | 146 } |
142 | 147 |
143 public HgTags getTags() { | 148 public HgTags getTags() { |
144 if (tags == null) { | 149 if (tags == null) { |
145 tags = new HgTags(); | 150 tags = new HgTags(this); |
146 try { | 151 try { |
147 tags.readGlobal(new File(repoDir.getParentFile(), ".hgtags")); | 152 HgDataFile hgTags = getFileNode(".hgtags"); |
153 if (hgTags.exists()) { | |
154 for (int i = 0; i <= hgTags.getLastRevision(); i++) { // FIXME in fact, would be handy to have walk(start,end) | |
155 // method for data files as well, though it looks odd. | |
156 try { | |
157 ByteArrayChannel sink = new ByteArrayChannel(); | |
158 hgTags.content(i, sink); | |
159 final String content = new String(sink.toArray(), "UTF8"); | |
160 tags.readGlobal(new StringReader(content)); | |
161 } catch (CancelledException ex) { | |
162 ex.printStackTrace(); // IGNORE, can't happen, we did not configure cancellation | |
163 } catch (HgDataStreamException ex) { | |
164 ex.printStackTrace(); // FIXME need to react | |
165 } catch (IOException ex) { | |
166 // UnsupportedEncodingException can't happen (UTF8) | |
167 // only from readGlobal. Need to reconsider exceptions thrown from there | |
168 ex.printStackTrace(); // XXX need to decide what to do this. failure to read single revision shall not break complete cycle | |
169 } | |
170 } | |
171 } | |
172 tags.readGlobal(new File(repoDir.getParentFile(), ".hgtags")); // XXX replace with HgDataFile.workingCopy | |
148 tags.readLocal(new File(repoDir, "localtags")); | 173 tags.readLocal(new File(repoDir, "localtags")); |
149 } catch (IOException ex) { | 174 } catch (IOException ex) { |
150 ex.printStackTrace(); // FIXME log or othewise report | 175 ex.printStackTrace(); // FIXME log or othewise report |
151 } | 176 } |
152 } | 177 } |