Mercurial > jhg
annotate cmdline/org/tmatesoft/hg/console/Bundle.java @ 694:7efabe0cddcf
Speed up (a) file rename history to minimize file reads; (b) file.isCopy(int) to read metadata for few revisions at once (use pattern assumes earlier revisions are likely to be queried, too); (c) HgIgnore.isIgnored by caching matched initial fragments (to substitute more expensive Matcher.matches with cheaper HashMap.contains)
| author | Artem Tikhomirov <tikhomirov.artem@gmail.com> | 
|---|---|
| date | Mon, 05 Aug 2013 17:42:10 +0200 | 
| parents | 6526d8adbc0f | 
| children | 
| rev | line source | 
|---|---|
| 
32
 
42585c7cd641
Initial dump of a bundle
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
1 /* | 
| 
423
 
9c9c442b5f2e
Major refactoring of exception handling. Low-level API uses RuntimeExceptions, while checked are left for higher level
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
357 
diff
changeset
 | 
2 * Copyright (c) 2011-2012 TMate Software Ltd | 
| 
74
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
37 
diff
changeset
 | 
3 * | 
| 
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
37 
diff
changeset
 | 
4 * This program is free software; you can redistribute it and/or modify | 
| 
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
37 
diff
changeset
 | 
5 * it under the terms of the GNU General Public License as published by | 
| 
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
37 
diff
changeset
 | 
6 * the Free Software Foundation; version 2 of the License. | 
| 
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
37 
diff
changeset
 | 
7 * | 
| 
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
37 
diff
changeset
 | 
8 * This program is distributed in the hope that it will be useful, | 
| 
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
37 
diff
changeset
 | 
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| 
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
37 
diff
changeset
 | 
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 
| 
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
37 
diff
changeset
 | 
11 * GNU General Public License for more details. | 
| 
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
37 
diff
changeset
 | 
12 * | 
| 
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
37 
diff
changeset
 | 
13 * For information on how to redistribute this software under | 
| 
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
37 
diff
changeset
 | 
14 * the terms of a license other than GNU General Public License | 
| 
102
 
a3a2e5deb320
Updated contact address to support@hg4j.com
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
74 
diff
changeset
 | 
15 * contact TMate Software at support@hg4j.com | 
| 
32
 
42585c7cd641
Initial dump of a bundle
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
16 */ | 
| 
74
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
37 
diff
changeset
 | 
17 package org.tmatesoft.hg.console; | 
| 
32
 
42585c7cd641
Initial dump of a bundle
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
18 | 
| 
 
42585c7cd641
Initial dump of a bundle
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
19 import java.io.File; | 
| 
299
 
45dc79e545f5
Recognize flag options (options with no arguments) in command line sample apps
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
190 
diff
changeset
 | 
20 import java.util.Collections; | 
| 
357
 
dfb8405d996f
Clean debug stacktraces
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
354 
diff
changeset
 | 
21 import java.util.LinkedList; | 
| 
32
 
42585c7cd641
Initial dump of a bundle
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
22 | 
| 
354
 
5f9073eabf06
Propagate errors with exceptions up to a end client
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
299 
diff
changeset
 | 
23 import org.tmatesoft.hg.core.HgException; | 
| 
182
 
f26ffe04ced0
Refactor HgBundle to dispatch changes found through callback
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
169 
diff
changeset
 | 
24 import org.tmatesoft.hg.core.Nodeid; | 
| 
74
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
37 
diff
changeset
 | 
25 import org.tmatesoft.hg.repo.HgBundle; | 
| 
182
 
f26ffe04ced0
Refactor HgBundle to dispatch changes found through callback
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
169 
diff
changeset
 | 
26 import org.tmatesoft.hg.repo.HgChangelog; | 
| 
169
 
8c8e3f372fa1
Towards initial clone: refactor HgBundle to provide slightly higher-level structure of the bundle
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
27 import org.tmatesoft.hg.repo.HgLookup; | 
| 
74
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
37 
diff
changeset
 | 
28 import org.tmatesoft.hg.repo.HgRepository; | 
| 
357
 
dfb8405d996f
Clean debug stacktraces
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
354 
diff
changeset
 | 
29 import org.tmatesoft.hg.repo.HgBundle.GroupElement; | 
| 
 
dfb8405d996f
Clean debug stacktraces
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
354 
diff
changeset
 | 
30 import org.tmatesoft.hg.repo.HgBundle.Inspector; | 
| 
182
 
f26ffe04ced0
Refactor HgBundle to dispatch changes found through callback
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
169 
diff
changeset
 | 
31 import org.tmatesoft.hg.repo.HgChangelog.RawChangeset; | 
| 
628
 
6526d8adbc0f
Explicit HgRuntimeException to facilitate easy switch from runtime to checked exceptions
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
423 
diff
changeset
 | 
32 import org.tmatesoft.hg.repo.HgRuntimeException; | 
| 
74
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
37 
diff
changeset
 | 
33 | 
| 
32
 
42585c7cd641
Initial dump of a bundle
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
34 | 
| 
 
42585c7cd641
Initial dump of a bundle
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
35 /** | 
| 
74
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
37 
diff
changeset
 | 
36 * WORK IN PROGRESS, DO NOT USE | 
| 
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
37 
diff
changeset
 | 
37 * | 
| 
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
37 
diff
changeset
 | 
38 * @author Artem Tikhomirov | 
| 
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
37 
diff
changeset
 | 
39 * @author TMate Software Ltd. | 
| 
32
 
42585c7cd641
Initial dump of a bundle
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
40 */ | 
| 
 
42585c7cd641
Initial dump of a bundle
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
41 public class Bundle { | 
| 
 
42585c7cd641
Initial dump of a bundle
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
42 public static void main(String[] args) throws Exception { | 
| 
299
 
45dc79e545f5
Recognize flag options (options with no arguments) in command line sample apps
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
190 
diff
changeset
 | 
43 Options cmdLineOpts = Options.parse(args, Collections.<String>emptySet()); | 
| 
182
 
f26ffe04ced0
Refactor HgBundle to dispatch changes found through callback
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
169 
diff
changeset
 | 
44 final HgRepository hgRepo = cmdLineOpts.findRepository(); | 
| 
37
 
e45e75e22523
Parse changesets from bundle's changelog group. Refactor Revlog to provide access to revision's raw content
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
36 
diff
changeset
 | 
45 if (hgRepo.isInvalid()) { | 
| 
 
e45e75e22523
Parse changesets from bundle's changelog group. Refactor Revlog to provide access to revision's raw content
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
36 
diff
changeset
 | 
46 System.err.printf("Can't find repository in: %s\n", hgRepo.getLocation()); | 
| 
 
e45e75e22523
Parse changesets from bundle's changelog group. Refactor Revlog to provide access to revision's raw content
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
36 
diff
changeset
 | 
47 return; | 
| 
 
e45e75e22523
Parse changesets from bundle's changelog group. Refactor Revlog to provide access to revision's raw content
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
36 
diff
changeset
 | 
48 } | 
| 
190
 
9b99d27aeddc
More debug printouts
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
182 
diff
changeset
 | 
49 File bundleFile = new File("/temp/hg/hg-bundle-cpython.tmp"); | 
| 
169
 
8c8e3f372fa1
Towards initial clone: refactor HgBundle to provide slightly higher-level structure of the bundle
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
50 HgBundle hgBundle = new HgLookup().loadBundle(bundleFile); | 
| 
357
 
dfb8405d996f
Clean debug stacktraces
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
354 
diff
changeset
 | 
51 hgBundle.inspectFiles(new Dump()); | 
| 
190
 
9b99d27aeddc
More debug printouts
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
182 
diff
changeset
 | 
52 if (Boolean.parseBoolean("true")) { | 
| 
 
9b99d27aeddc
More debug printouts
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
182 
diff
changeset
 | 
53 return; | 
| 
 
9b99d27aeddc
More debug printouts
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
182 
diff
changeset
 | 
54 } | 
| 
169
 
8c8e3f372fa1
Towards initial clone: refactor HgBundle to provide slightly higher-level structure of the bundle
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
55 /* pass -R <path-to-repo-with-less-revisions-than-bundle>, e.g. for bundle with tip=168 and -R \temp\hg4j-50 with tip:159 | 
| 
 
8c8e3f372fa1
Towards initial clone: refactor HgBundle to provide slightly higher-level structure of the bundle
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
56 +Changeset {User: ..., Comment: Integer ....} | 
| 
 
8c8e3f372fa1
Towards initial clone: refactor HgBundle to provide slightly higher-level structure of the bundle
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
57 +Changeset {User: ..., Comment: Approach with ...} | 
| 
 
8c8e3f372fa1
Towards initial clone: refactor HgBundle to provide slightly higher-level structure of the bundle
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
58 -Changeset {User: ..., Comment: Correct project name...} | 
| 
 
8c8e3f372fa1
Towards initial clone: refactor HgBundle to provide slightly higher-level structure of the bundle
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
59 -Changeset {User: ..., Comment: Record possible...} | 
| 
 
8c8e3f372fa1
Towards initial clone: refactor HgBundle to provide slightly higher-level structure of the bundle
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
60 */ | 
| 
182
 
f26ffe04ced0
Refactor HgBundle to dispatch changes found through callback
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
169 
diff
changeset
 | 
61 hgBundle.changes(hgRepo, new HgChangelog.Inspector() { | 
| 
 
f26ffe04ced0
Refactor HgBundle to dispatch changes found through callback
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
169 
diff
changeset
 | 
62 private final HgChangelog changelog = hgRepo.getChangelog(); | 
| 
 
f26ffe04ced0
Refactor HgBundle to dispatch changes found through callback
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
169 
diff
changeset
 | 
63 | 
| 
628
 
6526d8adbc0f
Explicit HgRuntimeException to facilitate easy switch from runtime to checked exceptions
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
423 
diff
changeset
 | 
64 public void next(int revisionNumber, Nodeid nodeid, RawChangeset cset) throws HgRuntimeException { | 
| 
423
 
9c9c442b5f2e
Major refactoring of exception handling. Low-level API uses RuntimeExceptions, while checked are left for higher level
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
357 
diff
changeset
 | 
65 if (changelog.isKnown(nodeid)) { | 
| 
 
9c9c442b5f2e
Major refactoring of exception handling. Low-level API uses RuntimeExceptions, while checked are left for higher level
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
357 
diff
changeset
 | 
66 System.out.print("+"); | 
| 
 
9c9c442b5f2e
Major refactoring of exception handling. Low-level API uses RuntimeExceptions, while checked are left for higher level
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
357 
diff
changeset
 | 
67 } else { | 
| 
 
9c9c442b5f2e
Major refactoring of exception handling. Low-level API uses RuntimeExceptions, while checked are left for higher level
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
357 
diff
changeset
 | 
68 System.out.print("-"); | 
| 
182
 
f26ffe04ced0
Refactor HgBundle to dispatch changes found through callback
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
169 
diff
changeset
 | 
69 } | 
| 
423
 
9c9c442b5f2e
Major refactoring of exception handling. Low-level API uses RuntimeExceptions, while checked are left for higher level
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
357 
diff
changeset
 | 
70 System.out.printf("%d:%s\n%s\n", revisionNumber, nodeid.shortNotation(), cset.toString()); | 
| 
182
 
f26ffe04ced0
Refactor HgBundle to dispatch changes found through callback
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
169 
diff
changeset
 | 
71 } | 
| 
 
f26ffe04ced0
Refactor HgBundle to dispatch changes found through callback
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
169 
diff
changeset
 | 
72 }); | 
| 
35
 
6061aa826a9e
Complete parsing of the bundle format
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
34 
diff
changeset
 | 
73 } | 
| 
169
 
8c8e3f372fa1
Towards initial clone: refactor HgBundle to provide slightly higher-level structure of the bundle
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
74 | 
| 
 
8c8e3f372fa1
Towards initial clone: refactor HgBundle to provide slightly higher-level structure of the bundle
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
75 /* | 
| 
 
8c8e3f372fa1
Towards initial clone: refactor HgBundle to provide slightly higher-level structure of the bundle
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
76 * TODO EXPLAIN why DataAccess.java on merge from branch has P2 set, and P1 is NULL | 
| 
 
8c8e3f372fa1
Towards initial clone: refactor HgBundle to provide slightly higher-level structure of the bundle
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
77 * | 
| 
 
8c8e3f372fa1
Towards initial clone: refactor HgBundle to provide slightly higher-level structure of the bundle
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
78 * excerpt from dump('hg-bundle-00') output (node, p1, p2, cs): | 
| 
 
8c8e3f372fa1
Towards initial clone: refactor HgBundle to provide slightly higher-level structure of the bundle
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
79 src/org/tmatesoft/hg/internal/DataAccess.java | 
| 
 
8c8e3f372fa1
Towards initial clone: refactor HgBundle to provide slightly higher-level structure of the bundle
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
80 186af94a2a7ddb34190e63ce556d0fa4dd24add2 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 6f1b88693d48422e98c3eaaa8428ffd4d4d98ca7; patches:1 | 
| 
 
8c8e3f372fa1
Towards initial clone: refactor HgBundle to provide slightly higher-level structure of the bundle
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
81 be8d0fdc4ff268bf5eb0a9120282ce6e63de1606 186af94a2a7ddb34190e63ce556d0fa4dd24add2 0000000000000000000000000000000000000000 a3a2e5deb320d7412ccbb59bdc44668d445bc4c4; patches:2 | 
| 
 
8c8e3f372fa1
Towards initial clone: refactor HgBundle to provide slightly higher-level structure of the bundle
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
82 333d7bbd4a80a5d6fb4b44e54e39e290f50dc7f8 be8d0fdc4ff268bf5eb0a9120282ce6e63de1606 0000000000000000000000000000000000000000 e93101b97e4ab0a3f3402ec0e80b6e559237c7c8; patches:1 | 
| 
 
8c8e3f372fa1
Towards initial clone: refactor HgBundle to provide slightly higher-level structure of the bundle
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
83 56e4523cb8b42630daf70511d73d29e0b375dfa5 0000000000000000000000000000000000000000 333d7bbd4a80a5d6fb4b44e54e39e290f50dc7f8 d5268ca7715b8d96204fc62abc632e8f55761547; patches:6 | 
| 
 
8c8e3f372fa1
Towards initial clone: refactor HgBundle to provide slightly higher-level structure of the bundle
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
84 f85b6d7ed3cc4b7c6f99444eb0a41b58793cc900 56e4523cb8b42630daf70511d73d29e0b375dfa5 0000000000000000000000000000000000000000 b413b16d10a50cc027f4c38e4df5a9fedd618a79; patches:4 | 
| 
 
8c8e3f372fa1
Towards initial clone: refactor HgBundle to provide slightly higher-level structure of the bundle
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
85 | 
| 
 
8c8e3f372fa1
Towards initial clone: refactor HgBundle to provide slightly higher-level structure of the bundle
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
86 RevlogDump for the file says: | 
| 
 
8c8e3f372fa1
Towards initial clone: refactor HgBundle to provide slightly higher-level structure of the bundle
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
87 Index Offset Flags Packed Actual Base Rev Link Rev Parent1 Parent2 nodeid | 
| 
 
8c8e3f372fa1
Towards initial clone: refactor HgBundle to provide slightly higher-level structure of the bundle
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
88 0: 4295032832 0 1109 2465 0 74 -1 -1 186af94a2a7ddb34190e63ce556d0fa4dd24add2 | 
| 
 
8c8e3f372fa1
Towards initial clone: refactor HgBundle to provide slightly higher-level structure of the bundle
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
89 1: 1109 0 70 2364 0 102 0 -1 be8d0fdc4ff268bf5eb0a9120282ce6e63de1606 | 
| 
 
8c8e3f372fa1
Towards initial clone: refactor HgBundle to provide slightly higher-level structure of the bundle
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
90 2: 1179 0 63 2365 0 122 1 -1 333d7bbd4a80a5d6fb4b44e54e39e290f50dc7f8 | 
| 
 
8c8e3f372fa1
Towards initial clone: refactor HgBundle to provide slightly higher-level structure of the bundle
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
91 3: 1242 0 801 3765 0 157 -1 2 56e4523cb8b42630daf70511d73d29e0b375dfa5 | 
| 
 
8c8e3f372fa1
Towards initial clone: refactor HgBundle to provide slightly higher-level structure of the bundle
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
92 4: 2043 0 130 3658 0 158 3 -1 f85b6d7ed3cc4b7c6f99444eb0a41b58793cc900 | 
| 
 
8c8e3f372fa1
Towards initial clone: refactor HgBundle to provide slightly higher-level structure of the bundle
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
93 | 
| 
 
8c8e3f372fa1
Towards initial clone: refactor HgBundle to provide slightly higher-level structure of the bundle
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
94 Excerpt from changelog dump: | 
| 
 
8c8e3f372fa1
Towards initial clone: refactor HgBundle to provide slightly higher-level structure of the bundle
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
95 155: 30541 0 155 195 155 155 154 -1 a4ec5e08701771b96057522188b16ed289e9e8fe | 
| 
 
8c8e3f372fa1
Towards initial clone: refactor HgBundle to provide slightly higher-level structure of the bundle
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
96 156: 30696 0 154 186 155 156 155 -1 643ddec3be36246fc052cf22ece503fa60cafe22 | 
| 
 
8c8e3f372fa1
Towards initial clone: refactor HgBundle to provide slightly higher-level structure of the bundle
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
97 157: 30850 0 478 1422 155 157 156 53 d5268ca7715b8d96204fc62abc632e8f55761547 | 
| 
 
8c8e3f372fa1
Towards initial clone: refactor HgBundle to provide slightly higher-level structure of the bundle
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
98 158: 31328 0 247 665 155 158 157 -1 b413b16d10a50cc027f4c38e4df5a9fedd618a79 | 
| 
 
8c8e3f372fa1
Towards initial clone: refactor HgBundle to provide slightly higher-level structure of the bundle
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
99 | 
| 
 
8c8e3f372fa1
Towards initial clone: refactor HgBundle to provide slightly higher-level structure of the bundle
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
100 | 
| 
 
8c8e3f372fa1
Towards initial clone: refactor HgBundle to provide slightly higher-level structure of the bundle
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
101 */ | 
| 
357
 
dfb8405d996f
Clean debug stacktraces
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
354 
diff
changeset
 | 
102 | 
| 
628
 
6526d8adbc0f
Explicit HgRuntimeException to facilitate easy switch from runtime to checked exceptions
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
423 
diff
changeset
 | 
103 public static void dump(HgBundle hgBundle) throws HgException, HgRuntimeException { | 
| 
357
 
dfb8405d996f
Clean debug stacktraces
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
354 
diff
changeset
 | 
104 Dump dump = new Dump(); | 
| 
 
dfb8405d996f
Clean debug stacktraces
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
354 
diff
changeset
 | 
105 hgBundle.inspectAll(dump); | 
| 
 
dfb8405d996f
Clean debug stacktraces
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
354 
diff
changeset
 | 
106 System.out.println("Total files:" + dump.names.size()); | 
| 
 
dfb8405d996f
Clean debug stacktraces
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
354 
diff
changeset
 | 
107 for (String s : dump.names) { | 
| 
 
dfb8405d996f
Clean debug stacktraces
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
354 
diff
changeset
 | 
108 System.out.println(s); | 
| 
 
dfb8405d996f
Clean debug stacktraces
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
354 
diff
changeset
 | 
109 } | 
| 
 
dfb8405d996f
Clean debug stacktraces
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
354 
diff
changeset
 | 
110 } | 
| 
 
dfb8405d996f
Clean debug stacktraces
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
354 
diff
changeset
 | 
111 | 
| 
 
dfb8405d996f
Clean debug stacktraces
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
354 
diff
changeset
 | 
112 public static class Dump implements Inspector { | 
| 
 
dfb8405d996f
Clean debug stacktraces
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
354 
diff
changeset
 | 
113 public final LinkedList<String> names = new LinkedList<String>(); | 
| 
 
dfb8405d996f
Clean debug stacktraces
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
354 
diff
changeset
 | 
114 | 
| 
 
dfb8405d996f
Clean debug stacktraces
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
354 
diff
changeset
 | 
115 public void changelogStart() { | 
| 
 
dfb8405d996f
Clean debug stacktraces
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
354 
diff
changeset
 | 
116 System.out.println("Changelog group"); | 
| 
 
dfb8405d996f
Clean debug stacktraces
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
354 
diff
changeset
 | 
117 } | 
| 
 
dfb8405d996f
Clean debug stacktraces
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
354 
diff
changeset
 | 
118 | 
| 
 
dfb8405d996f
Clean debug stacktraces
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
354 
diff
changeset
 | 
119 public void changelogEnd() { | 
| 
 
dfb8405d996f
Clean debug stacktraces
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
354 
diff
changeset
 | 
120 } | 
| 
 
dfb8405d996f
Clean debug stacktraces
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
354 
diff
changeset
 | 
121 | 
| 
 
dfb8405d996f
Clean debug stacktraces
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
354 
diff
changeset
 | 
122 public void manifestStart() { | 
| 
 
dfb8405d996f
Clean debug stacktraces
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
354 
diff
changeset
 | 
123 System.out.println("Manifest group"); | 
| 
 
dfb8405d996f
Clean debug stacktraces
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
354 
diff
changeset
 | 
124 } | 
| 
 
dfb8405d996f
Clean debug stacktraces
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
354 
diff
changeset
 | 
125 | 
| 
 
dfb8405d996f
Clean debug stacktraces
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
354 
diff
changeset
 | 
126 public void manifestEnd() { | 
| 
 
dfb8405d996f
Clean debug stacktraces
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
354 
diff
changeset
 | 
127 } | 
| 
 
dfb8405d996f
Clean debug stacktraces
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
354 
diff
changeset
 | 
128 | 
| 
 
dfb8405d996f
Clean debug stacktraces
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
354 
diff
changeset
 | 
129 public void fileStart(String name) { | 
| 
 
dfb8405d996f
Clean debug stacktraces
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
354 
diff
changeset
 | 
130 names.add(name); | 
| 
 
dfb8405d996f
Clean debug stacktraces
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
354 
diff
changeset
 | 
131 System.out.println(name); | 
| 
 
dfb8405d996f
Clean debug stacktraces
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
354 
diff
changeset
 | 
132 } | 
| 
 
dfb8405d996f
Clean debug stacktraces
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
354 
diff
changeset
 | 
133 | 
| 
 
dfb8405d996f
Clean debug stacktraces
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
354 
diff
changeset
 | 
134 public void fileEnd(String name) { | 
| 
 
dfb8405d996f
Clean debug stacktraces
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
354 
diff
changeset
 | 
135 } | 
| 
 
dfb8405d996f
Clean debug stacktraces
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
354 
diff
changeset
 | 
136 | 
| 
 
dfb8405d996f
Clean debug stacktraces
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
354 
diff
changeset
 | 
137 public boolean element(GroupElement ge) { | 
| 
 
dfb8405d996f
Clean debug stacktraces
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
354 
diff
changeset
 | 
138 System.out.printf(" %s\n", ge.toString()); | 
| 
 
dfb8405d996f
Clean debug stacktraces
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
354 
diff
changeset
 | 
139 return true; | 
| 
 
dfb8405d996f
Clean debug stacktraces
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
354 
diff
changeset
 | 
140 } | 
| 
 
dfb8405d996f
Clean debug stacktraces
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
354 
diff
changeset
 | 
141 } | 
| 
32
 
42585c7cd641
Initial dump of a bundle
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
142 } | 
