Mercurial > jhg
comparison src/org/tmatesoft/hg/internal/PhasesHelper.java @ 648:690e71d29bf6
Introduced RevisionSet to ease update of phase roots on push
| author | Artem Tikhomirov <tikhomirov.artem@gmail.com> | 
|---|---|
| date | Tue, 25 Jun 2013 20:48:37 +0200 | 
| parents | c75297c17867 | 
| children | e79cf9a8130b | 
   comparison
  equal
  deleted
  inserted
  replaced
| 647:c75297c17867 | 648:690e71d29bf6 | 
|---|---|
| 129 } | 129 } | 
| 130 } | 130 } | 
| 131 } | 131 } | 
| 132 } | 132 } | 
| 133 return HgPhase.Public; | 133 return HgPhase.Public; | 
| 134 | 134 } | 
| 135 | |
| 136 | |
| 137 /** | |
| 138 * @return all revisions with secret phase | |
| 139 */ | |
| 140 public RevisionSet allSecret() { | |
| 141 return allOf(HgPhase.Secret); | |
| 142 } | |
| 143 | |
| 144 public RevisionSet allDraft() { | |
| 145 return allOf(HgPhase.Draft).subtract(allOf(HgPhase.Secret)); | |
| 146 } | |
| 147 | |
| 148 /** | |
| 149 * For a given phase, collect all revisions with phase that is the same or more private (i.e. for Draft, returns Draft+Secret) | |
| 150 * The reason is not a nice API intention (which is awful, indeed), but an ease of implementation | |
| 151 */ | |
| 152 private RevisionSet allOf(HgPhase phase) { | |
| 153 assert phase != HgPhase.Public; | |
| 154 if (!isCapableOfPhases()) { | |
| 155 return new RevisionSet(Collections.<Nodeid>emptyList()); | |
| 156 } | |
| 157 final List<Nodeid> roots = getPhaseRoots(phase); | |
| 158 if (parentHelper != null) { | |
| 159 return new RevisionSet(roots).union(new RevisionSet(parentHelper.childrenOf(roots))); | |
| 160 } else { | |
| 161 RevisionSet rv = new RevisionSet(Collections.<Nodeid>emptyList()); | |
| 162 for (RevisionDescendants rd : getPhaseDescendants(phase)) { | |
| 163 rv = rv.union(rd.asRevisionSet()); | |
| 164 } | |
| 165 return rv; | |
| 166 } | |
| 135 } | 167 } | 
| 136 | 168 | 
| 137 private Boolean readRoots() throws HgRuntimeException { | 169 private Boolean readRoots() throws HgRuntimeException { | 
| 138 File phaseroots = repo.getRepositoryFile(Phaseroots); | 170 File phaseroots = repo.getRepositoryFile(Phaseroots); | 
| 139 BufferedReader br = null; | 171 BufferedReader br = null; | 
