Mercurial > jhg
comparison src/org/tmatesoft/hg/core/HgManifestCommand.java @ 565:78a9e26e670d
Refactor common code to initialize changelog revision for a command into standalone class
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Tue, 09 Apr 2013 17:15:30 +0200 |
parents | 3ca4ae7bdd38 |
children | 6526d8adbc0f |
comparison
equal
deleted
inserted
replaced
564:e6407313bab7 | 565:78a9e26e670d |
---|---|
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 * |
15 * contact TMate Software at support@hg4j.com | 15 * contact TMate Software at support@hg4j.com |
16 */ | 16 */ |
17 package org.tmatesoft.hg.core; | 17 package org.tmatesoft.hg.core; |
18 | 18 |
19 import static org.tmatesoft.hg.repo.HgRepository.*; | 19 import static org.tmatesoft.hg.repo.HgRepository.*; |
20 import static org.tmatesoft.hg.repo.HgRepository.BAD_REVISION; | |
21 import static org.tmatesoft.hg.repo.HgRepository.TIP; | |
22 | 20 |
23 import java.util.ConcurrentModificationException; | 21 import java.util.ConcurrentModificationException; |
24 import java.util.LinkedHashMap; | 22 import java.util.LinkedHashMap; |
25 import java.util.LinkedList; | 23 import java.util.LinkedList; |
26 import java.util.List; | 24 import java.util.List; |
27 | 25 |
26 import org.tmatesoft.hg.internal.CsetParamKeeper; | |
28 import org.tmatesoft.hg.internal.PathPool; | 27 import org.tmatesoft.hg.internal.PathPool; |
29 import org.tmatesoft.hg.repo.HgInvalidRevisionException; | |
30 import org.tmatesoft.hg.repo.HgManifest; | 28 import org.tmatesoft.hg.repo.HgManifest; |
29 import org.tmatesoft.hg.repo.HgManifest.Flags; | |
31 import org.tmatesoft.hg.repo.HgRepository; | 30 import org.tmatesoft.hg.repo.HgRepository; |
32 import org.tmatesoft.hg.repo.HgManifest.Flags; | |
33 import org.tmatesoft.hg.repo.HgRuntimeException; | 31 import org.tmatesoft.hg.repo.HgRuntimeException; |
34 import org.tmatesoft.hg.util.CancelSupport; | 32 import org.tmatesoft.hg.util.CancelSupport; |
35 import org.tmatesoft.hg.util.CancelledException; | 33 import org.tmatesoft.hg.util.CancelledException; |
36 import org.tmatesoft.hg.util.Path; | 34 import org.tmatesoft.hg.util.Path; |
37 import org.tmatesoft.hg.util.PathRewrite; | 35 import org.tmatesoft.hg.util.PathRewrite; |
68 // XXX if manifest range is different from that of changelog, need conversion utils (external?) | 66 // XXX if manifest range is different from that of changelog, need conversion utils (external?) |
69 boolean badArgs = rev1 == BAD_REVISION || rev2 == BAD_REVISION || rev1 == WORKING_COPY || rev2 == WORKING_COPY; | 67 boolean badArgs = rev1 == BAD_REVISION || rev2 == BAD_REVISION || rev1 == WORKING_COPY || rev2 == WORKING_COPY; |
70 badArgs |= rev2 != TIP && rev2 < rev1; // range(3, 1); | 68 badArgs |= rev2 != TIP && rev2 < rev1; // range(3, 1); |
71 badArgs |= rev1 == TIP && rev2 != TIP; // range(TIP, 2), although this may be legitimate when TIP points to 2 | 69 badArgs |= rev1 == TIP && rev2 != TIP; // range(TIP, 2), although this may be legitimate when TIP points to 2 |
72 if (badArgs) { | 70 if (badArgs) { |
71 // TODO [2.0 API break] throw checked HgBadArgumentException instead | |
73 throw new IllegalArgumentException(String.format("Bad range: [%d, %d]", rev1, rev2)); | 72 throw new IllegalArgumentException(String.format("Bad range: [%d, %d]", rev1, rev2)); |
74 } | 73 } |
75 startRev = rev1; | 74 startRev = rev1; |
76 endRev = rev2; | 75 endRev = rev2; |
77 return this; | 76 return this; |
81 * Select changeset for the command using revision index | 80 * Select changeset for the command using revision index |
82 * @param csetRevisionIndex index of changeset revision | 81 * @param csetRevisionIndex index of changeset revision |
83 * @return <code>this</code> for convenience. | 82 * @return <code>this</code> for convenience. |
84 */ | 83 */ |
85 public HgManifestCommand changeset(int csetRevisionIndex) { | 84 public HgManifestCommand changeset(int csetRevisionIndex) { |
85 // TODO [2.0 API break] shall throw HgBadArgumentException, like other commands do | |
86 return range(csetRevisionIndex, csetRevisionIndex); | 86 return range(csetRevisionIndex, csetRevisionIndex); |
87 } | 87 } |
88 | 88 |
89 /** | 89 /** |
90 * Select changeset for the command | 90 * Select changeset for the command |
93 * @return <code>this</code> for convenience | 93 * @return <code>this</code> for convenience |
94 * @throws HgBadArgumentException if failed to find supplied changeset revision | 94 * @throws HgBadArgumentException if failed to find supplied changeset revision |
95 */ | 95 */ |
96 public HgManifestCommand changeset(Nodeid nid) throws HgBadArgumentException { | 96 public HgManifestCommand changeset(Nodeid nid) throws HgBadArgumentException { |
97 // XXX also see HgLogCommand#changeset(Nodeid) | 97 // XXX also see HgLogCommand#changeset(Nodeid) |
98 try { | 98 final int csetRevIndex = new CsetParamKeeper(repo).set(nid).get(); |
99 final int csetRevIndex = repo.getChangelog().getRevisionIndex(nid); | 99 return range(csetRevIndex, csetRevIndex); |
100 return range(csetRevIndex, csetRevIndex); | |
101 } catch (HgInvalidRevisionException ex) { | |
102 throw new HgBadArgumentException("Can't find revision", ex).setRevision(nid); | |
103 } | |
104 } | 100 } |
105 | 101 |
106 public HgManifestCommand dirs(boolean include) { | 102 public HgManifestCommand dirs(boolean include) { |
107 // XXX whether directories with directories only are include or not | 103 // XXX whether directories with directories only are include or not |
108 // now lists only directories with files | 104 // now lists only directories with files |