comparison src/org/tmatesoft/hg/core/HgStatusCommand.java @ 683:98ff1fb49abe

Update commands to use changeset Nodeid and int in uniform way, clients of core.* classes shall not go back and forth from int to Nodeid
author Artem Tikhomirov <tikhomirov.artem@gmail.com>
date Wed, 24 Jul 2013 16:40:15 +0200
parents 90df078d6418
children 1499139a600a
comparison
equal deleted inserted replaced
682:f568330dd9c0 683:98ff1fb49abe
1 /* 1 /*
2 * Copyright (c) 2011-2012 TMate Software Ltd 2 * Copyright (c) 2011-2013 TMate Software Ltd
3 * 3 *
4 * This program is free software; you can redistribute it and/or modify 4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by 5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; version 2 of the License. 6 * the Free Software Foundation; version 2 of the License.
7 * 7 *
23 import java.io.IOException; 23 import java.io.IOException;
24 import java.util.ConcurrentModificationException; 24 import java.util.ConcurrentModificationException;
25 25
26 import org.tmatesoft.hg.internal.AdapterPlug; 26 import org.tmatesoft.hg.internal.AdapterPlug;
27 import org.tmatesoft.hg.internal.ChangelogHelper; 27 import org.tmatesoft.hg.internal.ChangelogHelper;
28 import org.tmatesoft.hg.internal.CsetParamKeeper;
28 import org.tmatesoft.hg.internal.Internals; 29 import org.tmatesoft.hg.internal.Internals;
29 import org.tmatesoft.hg.repo.HgRepository; 30 import org.tmatesoft.hg.repo.HgRepository;
30 import org.tmatesoft.hg.repo.HgRuntimeException; 31 import org.tmatesoft.hg.repo.HgRuntimeException;
31 import org.tmatesoft.hg.repo.HgStatusCollector; 32 import org.tmatesoft.hg.repo.HgStatusCollector;
32 import org.tmatesoft.hg.repo.HgStatusInspector; 33 import org.tmatesoft.hg.repo.HgStatusInspector;
113 } 114 }
114 if (changesetRevisionIndex == BAD_REVISION) { 115 if (changesetRevisionIndex == BAD_REVISION) {
115 changesetRevisionIndex = TIP; 116 changesetRevisionIndex = TIP;
116 } 117 }
117 startRevision = changesetRevisionIndex; 118 startRevision = changesetRevisionIndex;
118 return this; 119 // TODO [2.0 API break] shall throw HgBadArgumentException, like other commands do
119 } 120 return this;
120 121 }
122
123 /**
124 * Select base revision for difference
125 * @param changeset changelog revision, left range boundary if used in conjunction with {@link #revision(int)}
126 * @return <code>this</code> for convenience
127 * @throws HgBadArgumentException if revision is not a valid changeset identifier
128 */
129 public HgStatusCommand base(Nodeid changeset) throws HgBadArgumentException {
130 int ri = new CsetParamKeeper(repo).set(changeset).get();
131 return base(ri);
132 }
133
121 /** 134 /**
122 * Revision without base == --change 135 * Revision without base == --change
123 * Pass {@link HgRepository#WORKING_COPY} or {@link HgRepository#BAD_REVISION} to reset 136 * Pass {@link HgRepository#WORKING_COPY} or {@link HgRepository#BAD_REVISION} to reset
124 * @param changesetRevisionIndex - non-negative changeset revision local index, or any of {@link HgRepository#BAD_REVISION}, {@link HgRepository#WORKING_COPY} or {@link HgRepository#TIP} 137 * @param changesetRevisionIndex - non-negative changeset revision local index, or any of {@link HgRepository#BAD_REVISION}, {@link HgRepository#WORKING_COPY} or {@link HgRepository#TIP}
125 * @return <code>this</code> for convenience 138 * @return <code>this</code> for convenience
131 } 144 }
132 if (wrongRevisionIndex(changesetRevisionIndex)) { 145 if (wrongRevisionIndex(changesetRevisionIndex)) {
133 throw new IllegalArgumentException(String.valueOf(changesetRevisionIndex)); 146 throw new IllegalArgumentException(String.valueOf(changesetRevisionIndex));
134 } 147 }
135 endRevision = changesetRevisionIndex; 148 endRevision = changesetRevisionIndex;
136 return this; 149 // TODO [2.0 API break] shall throw HgBadArgumentException, like other commands do
137 } 150 return this;
138 151 }
152
153 /**
154 * Select changeset to show difference
155 * @see #revision(int)
156 * @param changeset changelog revision, right range boundary if <code>base</code> revision is set
157 * @return <code>this</code> for convenience
158 * @throws HgBadArgumentException if revision is not a valid changeset identifier
159 */
160 public HgStatusCommand revision(Nodeid changeset) throws HgBadArgumentException {
161 int ri = new CsetParamKeeper(repo).set(changeset).get();
162 return revision(ri);
163 }
164
139 /** 165 /**
140 * Shorthand for {@link #base(int) cmd.base(BAD_REVISION)}{@link #change(int) .revision(revision)} 166 * Shorthand for {@link #base(int) cmd.base(BAD_REVISION)}{@link #change(int) .revision(revision)}
141 * 167 *
142 * @param changesetRevisionIndex compare given revision against its parent 168 * @param changesetIndex compare given revision against its parent
143 * @return <code>this</code> for convenience 169 * @return <code>this</code> for convenience
144 */ 170 */
145 public HgStatusCommand change(int changesetRevisionIndex) { 171 public HgStatusCommand change(int changesetIndex) {
146 base(BAD_REVISION); 172 base(BAD_REVISION);
147 return revision(changesetRevisionIndex); 173 return revision(changesetIndex);
148 } 174 }
149 175
176 /**
177 * Report changes in specified changeset
178 * @see #change(int)
179 * @param changeset changelog revision to get status of
180 * @return <code>this</code> for convenience
181 * @throws HgBadArgumentException if revision is not a valid changeset identifier
182 */
183 public HgStatusCommand change(Nodeid changeset) throws HgBadArgumentException {
184 base(BAD_REVISION);
185 return revision(changeset);
186 }
187
150 /** 188 /**
151 * Limit status operation to certain sub-tree. 189 * Limit status operation to certain sub-tree.
152 * 190 *
153 * @param scopeMatcher - matcher to use, pass <code>null/<code> to reset 191 * @param scopeMatcher - matcher to use, pass <code>null/<code> to reset
154 * @return <code>this</code> for convenience 192 * @return <code>this</code> for convenience