Mercurial > hg4j
annotate src/org/tmatesoft/hg/core/HgChangeset.java @ 191:b777502a06f5
Do not assume second parent can be set only when first one is set, again
| author | Artem Tikhomirov <tikhomirov.artem@gmail.com> | 
|---|---|
| date | Thu, 14 Apr 2011 19:53:31 +0200 | 
| parents | ba2bf656f00f | 
| children | c9b305df0b89 | 
| rev | line source | 
|---|---|
| 
64
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
1 /* | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
2 * Copyright (c) 2011 TMate Software Ltd | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
3 * | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
4 * This program is free software; you can redistribute it and/or modify | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
5 * it under the terms of the GNU General Public License as published by | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
6 * the Free Software Foundation; version 2 of the License. | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
7 * | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
8 * This program is distributed in the hope that it will be useful, | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
11 * GNU General Public License for more details. | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
12 * | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
13 * For information on how to redistribute this software under | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
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: 
94 
diff
changeset
 | 
15 * contact TMate Software at support@hg4j.com | 
| 
64
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
16 */ | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
17 package org.tmatesoft.hg.core; | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
18 | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
19 import java.util.ArrayList; | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
20 import java.util.Collections; | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
21 import java.util.List; | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
22 | 
| 
131
 
aa1629f36482
Renamed .core classes to start with Hg prefix
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
129 
diff
changeset
 | 
23 import org.tmatesoft.hg.core.HgLogCommand.FileRevision; | 
| 
154
 
ba2bf656f00f
Changeset => RawChangeset
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
148 
diff
changeset
 | 
24 import org.tmatesoft.hg.repo.HgChangelog.RawChangeset; | 
| 
74
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
65 
diff
changeset
 | 
25 import org.tmatesoft.hg.repo.HgRepository; | 
| 
94
 
af1f3b78b918
*StatusCollector renamed to Hg*StatusCollector
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
93 
diff
changeset
 | 
26 import org.tmatesoft.hg.repo.HgStatusCollector; | 
| 
133
 
4a948ec83980
core.Path to util.Path as it's not Hg repo dependant
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
131 
diff
changeset
 | 
27 import org.tmatesoft.hg.util.Path; | 
| 
64
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
28 | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
29 | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
30 /** | 
| 
131
 
aa1629f36482
Renamed .core classes to start with Hg prefix
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
129 
diff
changeset
 | 
31 * Record in the Mercurial changelog, describing single commit. | 
| 
 
aa1629f36482
Renamed .core classes to start with Hg prefix
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
129 
diff
changeset
 | 
32 * | 
| 
64
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
33 * Not thread-safe, don't try to read from different threads | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
34 * | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
35 * @author Artem Tikhomirov | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
36 * @author TMate Software Ltd. | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
37 */ | 
| 
129
 
645829962785
core.Cset renamed to HgChangeset; repo.Changeset moved into HgChangelog
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
125 
diff
changeset
 | 
38 public class HgChangeset implements Cloneable { | 
| 
94
 
af1f3b78b918
*StatusCollector renamed to Hg*StatusCollector
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
93 
diff
changeset
 | 
39 private final HgStatusCollector statusHelper; | 
| 
142
 
37a34044e6bd
More reasonable use of path normalizer and path.source
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
133 
diff
changeset
 | 
40 private final Path.Source pathHelper; | 
| 
64
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
41 | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
42 // | 
| 
154
 
ba2bf656f00f
Changeset => RawChangeset
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
148 
diff
changeset
 | 
43 private RawChangeset changeset; | 
| 
64
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
44 private Nodeid nodeid; | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
45 | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
46 // | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
47 private List<FileRevision> modifiedFiles, addedFiles; | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
48 private List<Path> deletedFiles; | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
49 private int revNumber; | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
50 | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
51 // XXX consider CommandContext with StatusCollector, PathPool etc. Commands optionally get CC through a cons or create new | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
52 // and pass it around | 
| 
142
 
37a34044e6bd
More reasonable use of path normalizer and path.source
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
133 
diff
changeset
 | 
53 /*package-local*/HgChangeset(HgStatusCollector statusCollector, Path.Source pathFactory) { | 
| 
64
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
54 statusHelper = statusCollector; | 
| 
142
 
37a34044e6bd
More reasonable use of path normalizer and path.source
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
133 
diff
changeset
 | 
55 pathHelper = pathFactory; | 
| 
64
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
56 } | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
57 | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
58 /*package-local*/ | 
| 
154
 
ba2bf656f00f
Changeset => RawChangeset
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
148 
diff
changeset
 | 
59 void init(int localRevNumber, Nodeid nid, RawChangeset rawChangeset) { | 
| 
64
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
60 revNumber = localRevNumber; | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
61 nodeid = nid; | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
62 changeset = rawChangeset; | 
| 
65
 
e21df6259f83
Log commandline sample updated to use LogCommand
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
64 
diff
changeset
 | 
63 modifiedFiles = addedFiles = null; | 
| 
 
e21df6259f83
Log commandline sample updated to use LogCommand
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
64 
diff
changeset
 | 
64 deletedFiles = null; | 
| 
64
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
65 } | 
| 
65
 
e21df6259f83
Log commandline sample updated to use LogCommand
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
64 
diff
changeset
 | 
66 public int getRevision() { | 
| 
 
e21df6259f83
Log commandline sample updated to use LogCommand
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
64 
diff
changeset
 | 
67 return revNumber; | 
| 
 
e21df6259f83
Log commandline sample updated to use LogCommand
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
64 
diff
changeset
 | 
68 } | 
| 
 
e21df6259f83
Log commandline sample updated to use LogCommand
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
64 
diff
changeset
 | 
69 public Nodeid getNodeid() { | 
| 
 
e21df6259f83
Log commandline sample updated to use LogCommand
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
64 
diff
changeset
 | 
70 return nodeid; | 
| 
 
e21df6259f83
Log commandline sample updated to use LogCommand
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
64 
diff
changeset
 | 
71 } | 
| 
64
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
72 public String getUser() { | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
73 return changeset.user(); | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
74 } | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
75 public String getComment() { | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
76 return changeset.comment(); | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
77 } | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
78 public String getBranch() { | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
79 return changeset.branch(); | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
80 } | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
81 public String getDate() { | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
82 return changeset.dateString(); | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
83 } | 
| 
65
 
e21df6259f83
Log commandline sample updated to use LogCommand
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
64 
diff
changeset
 | 
84 public Nodeid getManifestRevision() { | 
| 
 
e21df6259f83
Log commandline sample updated to use LogCommand
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
64 
diff
changeset
 | 
85 return changeset.manifest(); | 
| 
 
e21df6259f83
Log commandline sample updated to use LogCommand
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
64 
diff
changeset
 | 
86 } | 
| 
64
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
87 | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
88 public List<Path> getAffectedFiles() { | 
| 
87
 
25f2e5d1cd8b
Fix IAE when changeset has no files listed (merged revision)
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
74 
diff
changeset
 | 
89 // reports files as recorded in changelog. Note, merge revisions may have no | 
| 
 
25f2e5d1cd8b
Fix IAE when changeset has no files listed (merged revision)
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
74 
diff
changeset
 | 
90 // files listed, and thus this method would return empty list, while | 
| 
 
25f2e5d1cd8b
Fix IAE when changeset has no files listed (merged revision)
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
74 
diff
changeset
 | 
91 // #getModifiedFiles() would return list with merged file(s) (because it uses status to get 'em, not | 
| 
 
25f2e5d1cd8b
Fix IAE when changeset has no files listed (merged revision)
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
74 
diff
changeset
 | 
92 // what #files() gives). | 
| 
64
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
93 ArrayList<Path> rv = new ArrayList<Path>(changeset.files().size()); | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
94 for (String name : changeset.files()) { | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
95 rv.add(pathHelper.path(name)); | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
96 } | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
97 return rv; | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
98 } | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
99 | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
100 public List<FileRevision> getModifiedFiles() { | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
101 if (modifiedFiles == null) { | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
102 initFileChanges(); | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
103 } | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
104 return modifiedFiles; | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
105 } | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
106 | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
107 public List<FileRevision> getAddedFiles() { | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
108 if (addedFiles == null) { | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
109 initFileChanges(); | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
110 } | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
111 return addedFiles; | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
112 } | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
113 | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
114 public List<Path> getRemovedFiles() { | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
115 if (deletedFiles == null) { | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
116 initFileChanges(); | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
117 } | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
118 return deletedFiles; | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
119 } | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
120 | 
| 
125
 
26ad21b250e4
Explicit op to tell merge revisions
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
124 
diff
changeset
 | 
121 public boolean isMerge() { | 
| 
 
26ad21b250e4
Explicit op to tell merge revisions
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
124 
diff
changeset
 | 
122 return !Nodeid.NULL.equals(getSecondParentRevision()); | 
| 
 
26ad21b250e4
Explicit op to tell merge revisions
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
124 
diff
changeset
 | 
123 } | 
| 
124
 
cea84c5995e6
Changeset to access parent nodeids
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
124 | 
| 
 
cea84c5995e6
Changeset to access parent nodeids
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
125 public Nodeid getFirstParentRevision() { | 
| 
 
cea84c5995e6
Changeset to access parent nodeids
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
126 // XXX may read once for both p1 and p2 | 
| 
 
cea84c5995e6
Changeset to access parent nodeids
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
127 // or use ParentWalker to minimize reads even more. | 
| 
 
cea84c5995e6
Changeset to access parent nodeids
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
128 byte[] p1 = new byte[20]; | 
| 
 
cea84c5995e6
Changeset to access parent nodeids
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
129 statusHelper.getRepo().getChangelog().parents(revNumber, new int[2], p1, null); | 
| 
 
cea84c5995e6
Changeset to access parent nodeids
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
130 return Nodeid.fromBinary(p1, 0); | 
| 
 
cea84c5995e6
Changeset to access parent nodeids
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
131 } | 
| 
 
cea84c5995e6
Changeset to access parent nodeids
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
132 | 
| 
 
cea84c5995e6
Changeset to access parent nodeids
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
133 public Nodeid getSecondParentRevision() { | 
| 
 
cea84c5995e6
Changeset to access parent nodeids
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
134 byte[] p2 = new byte[20]; | 
| 
 
cea84c5995e6
Changeset to access parent nodeids
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
135 statusHelper.getRepo().getChangelog().parents(revNumber, new int[2], null, p2); | 
| 
 
cea84c5995e6
Changeset to access parent nodeids
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
136 return Nodeid.fromBinary(p2, 0); | 
| 
 
cea84c5995e6
Changeset to access parent nodeids
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
137 } | 
| 
 
cea84c5995e6
Changeset to access parent nodeids
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
138 | 
| 
64
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
139 @Override | 
| 
129
 
645829962785
core.Cset renamed to HgChangeset; repo.Changeset moved into HgChangelog
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
125 
diff
changeset
 | 
140 public HgChangeset clone() { | 
| 
64
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
141 try { | 
| 
129
 
645829962785
core.Cset renamed to HgChangeset; repo.Changeset moved into HgChangelog
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
125 
diff
changeset
 | 
142 HgChangeset copy = (HgChangeset) super.clone(); | 
| 
64
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
143 copy.changeset = changeset.clone(); | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
144 return copy; | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
145 } catch (CloneNotSupportedException ex) { | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
146 throw new InternalError(ex.toString()); | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
147 } | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
148 } | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
149 | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
150 private /*synchronized*/ void initFileChanges() { | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
151 ArrayList<Path> deleted = new ArrayList<Path>(); | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
152 ArrayList<FileRevision> modified = new ArrayList<FileRevision>(); | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
153 ArrayList<FileRevision> added = new ArrayList<FileRevision>(); | 
| 
94
 
af1f3b78b918
*StatusCollector renamed to Hg*StatusCollector
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
93 
diff
changeset
 | 
154 HgStatusCollector.Record r = new HgStatusCollector.Record(); | 
| 
64
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
155 statusHelper.change(revNumber, r); | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
156 final HgRepository repo = statusHelper.getRepo(); | 
| 
93
 
d55d4eedfc57
Switch to Path instead of String in filenames returned by various status operations
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
87 
diff
changeset
 | 
157 for (Path s : r.getModified()) { | 
| 
64
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
158 Nodeid nid = r.nodeidAfterChange(s); | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
159 if (nid == null) { | 
| 
148
 
1a7a9a20e1f9
Exceptions, javadoc. Initial cancel and progress support
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
142 
diff
changeset
 | 
160 throw new HgBadStateException(); | 
| 
64
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
161 } | 
| 
93
 
d55d4eedfc57
Switch to Path instead of String in filenames returned by various status operations
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
87 
diff
changeset
 | 
162 modified.add(new FileRevision(repo, nid, s)); | 
| 
64
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
163 } | 
| 
93
 
d55d4eedfc57
Switch to Path instead of String in filenames returned by various status operations
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
87 
diff
changeset
 | 
164 for (Path s : r.getAdded()) { | 
| 
64
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
165 Nodeid nid = r.nodeidAfterChange(s); | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
166 if (nid == null) { | 
| 
148
 
1a7a9a20e1f9
Exceptions, javadoc. Initial cancel and progress support
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
142 
diff
changeset
 | 
167 throw new HgBadStateException(); | 
| 
64
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
168 } | 
| 
93
 
d55d4eedfc57
Switch to Path instead of String in filenames returned by various status operations
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
87 
diff
changeset
 | 
169 added.add(new FileRevision(repo, nid, s)); | 
| 
64
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
170 } | 
| 
93
 
d55d4eedfc57
Switch to Path instead of String in filenames returned by various status operations
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
87 
diff
changeset
 | 
171 for (Path s : r.getRemoved()) { | 
| 
124
 
cea84c5995e6
Changeset to access parent nodeids
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
172 // with Path from getRemoved, may just copy | 
| 
93
 
d55d4eedfc57
Switch to Path instead of String in filenames returned by various status operations
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
87 
diff
changeset
 | 
173 deleted.add(s); | 
| 
64
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
174 } | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
175 modified.trimToSize(); | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
176 added.trimToSize(); | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
177 deleted.trimToSize(); | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
178 modifiedFiles = Collections.unmodifiableList(modified); | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
179 addedFiles = Collections.unmodifiableList(added); | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
180 deletedFiles = Collections.unmodifiableList(deleted); | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
181 } | 
| 
 
19e9e220bf68
Convenient commands constitute hi-level API. org.tmatesoft namespace, GPL2 statement
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
182 } | 
