Mercurial > hg4j
comparison src/com/tmate/hgkit/console/Log.java @ 60:613c936d74e4
Log operation to output mode detailed (added, removed) files
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Tue, 18 Jan 2011 00:30:41 +0100 |
parents | f1db8610da62 |
children | e21df6259f83 |
comparison
equal
deleted
inserted
replaced
59:b771e94a4f7c | 60:613c936d74e4 |
---|---|
14 import com.tmate.hgkit.ll.Changeset; | 14 import com.tmate.hgkit.ll.Changeset; |
15 import com.tmate.hgkit.ll.HgDataFile; | 15 import com.tmate.hgkit.ll.HgDataFile; |
16 import com.tmate.hgkit.ll.HgRepository; | 16 import com.tmate.hgkit.ll.HgRepository; |
17 import com.tmate.hgkit.ll.Nodeid; | 17 import com.tmate.hgkit.ll.Nodeid; |
18 import com.tmate.hgkit.ll.Revlog; | 18 import com.tmate.hgkit.ll.Revlog; |
19 import com.tmate.hgkit.ll.StatusCollector; | |
19 | 20 |
20 /** | 21 /** |
21 * @author artem | 22 * @author artem |
22 */ | 23 */ |
23 public class Log { | 24 public class Log { |
31 return; | 32 return; |
32 } | 33 } |
33 System.out.println(hgRepo.getLocation()); | 34 System.out.println(hgRepo.getLocation()); |
34 final Dump dump = new Dump(hgRepo); | 35 final Dump dump = new Dump(hgRepo); |
35 dump.complete = true; //cmdLineOpts; | 36 dump.complete = true; //cmdLineOpts; |
37 dump.verbose = false; //cmdLineOpts; | |
36 dump.reverseOrder = true; | 38 dump.reverseOrder = true; |
37 dump.branches = cmdLineOpts.branches; | 39 dump.branches = cmdLineOpts.branches; |
38 if (cmdLineOpts.users != null) { | 40 if (cmdLineOpts.users != null) { |
39 dump.users = new LinkedHashSet<String>(); | 41 dump.users = new LinkedHashSet<String>(); |
40 for (String u : cmdLineOpts.users) { | 42 for (String u : cmdLineOpts.users) { |
94 | 96 |
95 // Differences with standard hg log output | 97 // Differences with standard hg log output |
96 // - complete == true (--debug) files are not broke down to modified,+ and - | 98 // - complete == true (--debug) files are not broke down to modified,+ and - |
97 private static final class Dump implements Changeset.Inspector { | 99 private static final class Dump implements Changeset.Inspector { |
98 // params | 100 // params |
99 boolean complete = false; | 101 boolean complete = false; // roughly --debug |
100 boolean reverseOrder = false; | 102 boolean reverseOrder = false; |
101 Set<String> branches; | 103 Set<String> branches; |
102 Set<String> users; // shall be lowercased | 104 Set<String> users; // shall be lowercased |
105 boolean verbose = true; // roughly -v | |
103 // own | 106 // own |
104 private LinkedList<String> l = new LinkedList<String>(); | 107 private LinkedList<String> l = new LinkedList<String>(); |
105 private final HgRepository repo; | 108 private final HgRepository repo; |
106 private Revlog.ParentWalker changelogWalker; | 109 private Revlog.ParentWalker changelogWalker; |
107 private final int tip ; | 110 private final int tip ; |
111 private StatusCollector statusHelper; | |
108 | 112 |
109 public Dump(HgRepository hgRepo) { | 113 public Dump(HgRepository hgRepo) { |
110 repo = hgRepo; | 114 repo = hgRepo; |
111 tip = hgRepo.getChangelog().getRevisionCount() - 1; | 115 tip = hgRepo.getChangelog().getRevisionCount() - 1; |
112 } | 116 } |
174 int p2x = p2 == Nodeid.NULL ? -1 : repo.getChangelog().getLocalRevisionNumber(p2); | 178 int p2x = p2 == Nodeid.NULL ? -1 : repo.getChangelog().getLocalRevisionNumber(p2); |
175 int mx = repo.getManifest().getLocalRevisionNumber(cset.manifest()); | 179 int mx = repo.getManifest().getLocalRevisionNumber(cset.manifest()); |
176 f.format("parent: %d:%s\nparent: %d:%s\nmanifest: %d:%s\n", p1x, p1, p2x, p2, mx, cset.manifest()); | 180 f.format("parent: %d:%s\nparent: %d:%s\nmanifest: %d:%s\n", p1x, p1, p2x, p2, mx, cset.manifest()); |
177 } | 181 } |
178 f.format("user: %s\ndate: %s\n", cset.user(), cset.dateString()); | 182 f.format("user: %s\ndate: %s\n", cset.user(), cset.dateString()); |
179 if (complete) { | 183 if (!complete && verbose) { |
180 final List<String> files = cset.files(); | 184 final List<String> files = cset.files(); |
181 sb.append("files: "); | 185 sb.append("files: "); |
182 for (String s : files) { | 186 for (String s : files) { |
183 sb.append(' '); | 187 sb.append(' '); |
184 sb.append(s); | 188 sb.append(s); |
185 } | 189 } |
190 sb.append('\n'); | |
191 } | |
192 if (complete) { | |
193 if (statusHelper == null) { | |
194 statusHelper = new StatusCollector(repo); | |
195 } | |
196 StatusCollector.Record r = new StatusCollector.Record(); | |
197 statusHelper.change(revNumber, r); | |
198 if (!r.getModified().isEmpty()) { | |
199 sb.append("files: "); | |
200 for (String s : r.getModified()) { | |
201 sb.append(' '); | |
202 sb.append(s); | |
203 } | |
204 sb.append('\n'); | |
205 } | |
206 if (!r.getAdded().isEmpty()) { | |
207 sb.append("files+: "); | |
208 for (String s : r.getAdded()) { | |
209 sb.append(' '); | |
210 sb.append(s); | |
211 } | |
212 sb.append('\n'); | |
213 } | |
214 if (!r.getRemoved().isEmpty()) { | |
215 sb.append("files-: "); | |
216 for (String s : r.getRemoved()) { | |
217 sb.append(' '); | |
218 sb.append(s); | |
219 } | |
220 sb.append('\n'); | |
221 } | |
186 if (cset.extras() != null) { | 222 if (cset.extras() != null) { |
187 sb.append("\nextra: "); | 223 sb.append("extra: "); |
188 for (Map.Entry<String, String> e : cset.extras().entrySet()) { | 224 for (Map.Entry<String, String> e : cset.extras().entrySet()) { |
189 sb.append(' '); | 225 sb.append(' '); |
190 sb.append(e.getKey()); | 226 sb.append(e.getKey()); |
191 sb.append('='); | 227 sb.append('='); |
192 sb.append(e.getValue()); | 228 sb.append(e.getValue()); |
193 } | 229 } |
194 } | 230 sb.append('\n'); |
195 f.format("\ndescription:\n%s\n\n", cset.comment()); | 231 } |
232 } | |
233 if (complete || verbose) { | |
234 f.format("description:\n%s\n\n", cset.comment()); | |
196 } else { | 235 } else { |
197 f.format("summary: %s\n\n", cset.comment()); | 236 f.format("summary: %s\n\n", cset.comment()); |
198 } | 237 } |
199 return sb.toString(); | 238 return sb.toString(); |
200 } | 239 } |