Mercurial > hg > mercurial
annotate mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialCollectChangesPolicy.java @ 713:41013464149f
fix prefix message
author | eugene.petrenko@jetbrains.com |
---|---|
date | Mon, 13 Jan 2014 15:25:54 +0100 |
parents | a07f685ce394 |
children | d1469a7cc038 |
rev | line source |
---|---|
567
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
1 package jetbrains.buildServer.buildTriggers.vcs.mercurial; |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
2 |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
3 import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.*; |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
4 import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.exception.UnknownRevisionException; |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
5 import jetbrains.buildServer.log.Loggers; |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
6 import jetbrains.buildServer.vcs.*; |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
7 import jetbrains.buildServer.vcs.impl.VcsRootImpl; |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
8 import org.jetbrains.annotations.NotNull; |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
9 import org.jetbrains.annotations.Nullable; |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
10 |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
11 import java.net.URISyntaxException; |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
12 import java.util.*; |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
13 |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
14 import static java.util.Arrays.asList; |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
15 import static java.util.Collections.emptyList; |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
16 import static java.util.Collections.emptyMap; |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
17 |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
18 public class MercurialCollectChangesPolicy implements CollectChangesBetweenRoots, CollectChangesBetweenRepositories { |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
19 |
600
6c480513e5c2
Optimize subrepo changes calculation: reuse subrepo revision table calculated for parent commit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
595
diff
changeset
|
20 private final static AscendingRevNums ASCENDING_REV_NUMS = new AscendingRevNums(); |
6c480513e5c2
Optimize subrepo changes calculation: reuse subrepo revision table calculated for parent commit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
595
diff
changeset
|
21 |
567
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
22 private final MercurialVcsSupport myVcs; |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
23 private final ServerPluginConfig myConfig; |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
24 private final HgVcsRootFactory myHgVcsRootFactory; |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
25 private final RepoFactory myRepoFactory; |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
26 private final HgPathProvider myHgPathProvider; |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
27 |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
28 |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
29 public MercurialCollectChangesPolicy(@NotNull MercurialVcsSupport vcs, |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
30 @NotNull ServerPluginConfig config, |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
31 @NotNull HgVcsRootFactory hgVcsRootFactory, |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
32 @NotNull RepoFactory repoFactory, |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
33 @NotNull HgPathProvider hgPathProvider) { |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
34 myVcs = vcs; |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
35 myConfig = config; |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
36 myHgVcsRootFactory = hgVcsRootFactory; |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
37 myRepoFactory = repoFactory; |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
38 myHgPathProvider = hgPathProvider; |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
39 } |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
40 |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
41 |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
42 @NotNull |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
43 public RepositoryStateData getCurrentState(@NotNull VcsRoot root) throws VcsException { |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
44 HgVcsRoot hgRoot = myHgVcsRootFactory.createHgRoot(root); |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
45 myVcs.syncRepository(hgRoot); |
649
0b50d7952a7d
TW-23468 support tags as branches
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
645
diff
changeset
|
46 boolean includeTags = myConfig.useTagsAsBranches() && hgRoot.useTagsAsBranches(); |
0b50d7952a7d
TW-23468 support tags as branches
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
645
diff
changeset
|
47 Map<String, String> revisions = myVcs.createRepo(hgRoot).getBranchRevisions(myConfig.bookmarksEnabled(), includeTags); |
567
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
48 String defaultBranchName = hgRoot.getBranchName(); |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
49 if (revisions.get(defaultBranchName) == null) { |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
50 throw new VcsException("Cannot find revision of the default branch '" + |
590
87754c01d304
LogUtil is not available in vcs worker + remove duplicates
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
585
diff
changeset
|
51 defaultBranchName + "' of vcs root " + myVcs.describeVcsRoot(root)); |
567
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
52 } |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
53 return RepositoryStateData.createVersionState(defaultBranchName, revisions); |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
54 } |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
55 |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
56 |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
57 @NotNull |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
58 public List<ModificationData> collectChanges(@NotNull VcsRoot fromRoot, |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
59 @NotNull RepositoryStateData fromState, |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
60 @NotNull VcsRoot toRoot, |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
61 @NotNull RepositoryStateData toState, |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
62 @NotNull CheckoutRules rules) throws VcsException { |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
63 return collectChanges(toRoot, fromState, toState, rules); |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
64 } |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
65 |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
66 |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
67 @NotNull |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
68 public List<ModificationData> collectChanges(@NotNull VcsRoot root, |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
69 @NotNull RepositoryStateData fromState, |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
70 @NotNull RepositoryStateData toState, |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
71 @NotNull CheckoutRules rules) throws VcsException { |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
72 List<ModificationData> changes = new ArrayList<ModificationData>(); |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
73 HgVcsRoot hgRoot = myHgVcsRootFactory.createHgRoot(root); |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
74 OperationContext ctx = new OperationContext(myVcs, myRepoFactory, myHgPathProvider, fromState, toState); |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
75 for (Map.Entry<String, String> entry : toState.getBranchRevisions().entrySet()) { |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
76 String branch = entry.getKey(); |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
77 String toRevision = entry.getValue(); |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
78 String fromRevision = fromState.getBranchRevisions().get(branch); |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
79 if (fromRevision == null) |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
80 fromRevision = fromState.getBranchRevisions().get(fromState.getDefaultBranchName()); |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
81 if (toRevision.equals(fromRevision) || fromRevision == null) |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
82 continue; |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
83 |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
84 Collection<String> fromRevisions = ctx.getFromRevisionsForBranch(hgRoot, fromRevision, toRevision); |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
85 List<ModificationData> branchChanges = collectChanges(ctx, root, fromRevisions, toRevision, rules); |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
86 for (ModificationData change : branchChanges) { |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
87 if (!ctx.isReportedModification(change)) { |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
88 changes.add(change); |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
89 ctx.markAsReported(change); |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
90 } |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
91 } |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
92 } |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
93 changes.addAll(getSubrepoChanges(ctx, root, changes)); |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
94 return changes; |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
95 } |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
96 |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
97 |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
98 @NotNull |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
99 public List<ModificationData> collectChanges(@NotNull VcsRoot fromRoot, |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
100 @NotNull String fromRootRevision, |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
101 @NotNull VcsRoot toRoot, |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
102 @Nullable String toRootRevision, |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
103 @NotNull CheckoutRules checkoutRules) throws VcsException { |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
104 HgVcsRoot hgRoot = myHgVcsRootFactory.createHgRoot(toRoot); |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
105 myVcs.syncRepository(hgRoot); |
696
a07f685ce394
Get rid of depricated getCurrentVersion() method
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
691
diff
changeset
|
106 String toRevision = toRootRevision; |
a07f685ce394
Get rid of depricated getCurrentVersion() method
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
691
diff
changeset
|
107 if (toRevision == null) { |
a07f685ce394
Get rid of depricated getCurrentVersion() method
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
691
diff
changeset
|
108 RepositoryStateData state = myVcs.getCollectChangesPolicy().getCurrentState(toRoot); |
a07f685ce394
Get rid of depricated getCurrentVersion() method
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
691
diff
changeset
|
109 toRevision = state.getBranchRevisions().get(state.getDefaultBranchName()); |
a07f685ce394
Get rid of depricated getCurrentVersion() method
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
691
diff
changeset
|
110 } |
567
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
111 String mergeBase = getMergeBase(hgRoot, fromRootRevision, toRevision); |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
112 if (mergeBase == null) |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
113 return Collections.emptyList(); |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
114 return collectChanges(toRoot, mergeBase, toRootRevision, checkoutRules); |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
115 } |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
116 |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
117 |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
118 public List<ModificationData> collectChanges(@NotNull VcsRoot root, |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
119 @NotNull String fromVersion, |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
120 @Nullable String currentVersion, |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
121 @NotNull CheckoutRules checkoutRules) throws VcsException { |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
122 if (currentVersion == null) |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
123 return emptyList(); |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
124 OperationContext ctx = new OperationContext(myVcs, myRepoFactory, myHgPathProvider, fromVersion, currentVersion); |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
125 List<ModificationData> changes = collectChanges(ctx, root, asList(fromVersion), currentVersion, checkoutRules); |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
126 changes.addAll(getSubrepoChanges(ctx, root, changes)); |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
127 return changes; |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
128 } |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
129 |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
130 |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
131 @Nullable |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
132 private String getMergeBase(@NotNull HgVcsRoot root, @NotNull String revision1, @NotNull String revision2) throws VcsException { |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
133 String result = myVcs.createRepo(root).mergeBase() |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
134 .revision1(revision1) |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
135 .revision2(revision2) |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
136 .call(); |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
137 if (result == null) |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
138 result = getMinusNthCommit(root, 10); |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
139 return result; |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
140 } |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
141 |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
142 |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
143 @Nullable |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
144 private String getMinusNthCommit(@NotNull HgVcsRoot root, int n) throws VcsException { |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
145 LogCommand log = myVcs.createRepo(root).log() |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
146 .inBranch(root.getBranchName()) |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
147 .toNamedRevision(root.getBranchName()); |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
148 if (n > 0) |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
149 log.setLimit(n); |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
150 List<ChangeSet> changeSets = log.call(); |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
151 if (changeSets.isEmpty()) |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
152 return null; |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
153 return changeSets.get(0).getId(); |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
154 } |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
155 |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
156 |
656
32d2a04206c8
Implement ModificationInfoBuilder
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
649
diff
changeset
|
157 public List<ModificationData> collectChanges(@NotNull OperationContext ctx, |
32d2a04206c8
Implement ModificationInfoBuilder
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
649
diff
changeset
|
158 @NotNull VcsRoot root, |
32d2a04206c8
Implement ModificationInfoBuilder
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
649
diff
changeset
|
159 @NotNull Collection<String> fromVersion, |
32d2a04206c8
Implement ModificationInfoBuilder
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
649
diff
changeset
|
160 @Nullable String currentVersion, |
32d2a04206c8
Implement ModificationInfoBuilder
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
649
diff
changeset
|
161 @NotNull CheckoutRules checkoutRules) throws VcsException { |
567
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
162 HgVcsRoot hgRoot = myHgVcsRootFactory.createHgRoot(root); |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
163 ctx.syncRepository(hgRoot); |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
164 List<ModificationData> result = new ArrayList<ModificationData>(); |
600
6c480513e5c2
Optimize subrepo changes calculation: reuse subrepo revision table calculated for parent commit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
595
diff
changeset
|
165 List<ChangeSet> csets = getChangesets(ctx, hgRoot, fromVersion, currentVersion); |
6c480513e5c2
Optimize subrepo changes calculation: reuse subrepo revision table calculated for parent commit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
595
diff
changeset
|
166 //When commit has no changes in subrepo configuration we can reuse |
6c480513e5c2
Optimize subrepo changes calculation: reuse subrepo revision table calculated for parent commit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
595
diff
changeset
|
167 //subrepo revision table calculated for its parent commit(s). To do |
6c480513e5c2
Optimize subrepo changes calculation: reuse subrepo revision table calculated for parent commit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
595
diff
changeset
|
168 //that parents should be processed before children: |
6c480513e5c2
Optimize subrepo changes calculation: reuse subrepo revision table calculated for parent commit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
595
diff
changeset
|
169 Collections.sort(csets, ASCENDING_REV_NUMS); |
6c480513e5c2
Optimize subrepo changes calculation: reuse subrepo revision table calculated for parent commit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
595
diff
changeset
|
170 for (ChangeSet cset : csets) { |
567
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
171 result.add(createModificationData(ctx, cset, root, checkoutRules)); |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
172 } |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
173 return result; |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
174 } |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
175 |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
176 |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
177 @NotNull |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
178 private List<ChangeSet> getChangesets(@NotNull OperationContext ctx, |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
179 @NotNull final HgVcsRoot root, |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
180 @NotNull final Collection<String> fromVersions, |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
181 @Nullable final String toVersion) throws VcsException { |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
182 if (toVersion == null) |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
183 return emptyList(); |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
184 List<String> fromCommits = new ArrayList<String>(); |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
185 for (String fromVersion : fromVersions) { |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
186 fromCommits.add(new ChangeSetRevision(fromVersion).getId()); |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
187 } |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
188 String toCommit = new ChangeSetRevision(toVersion).getId(); |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
189 try { |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
190 ServerHgRepo repo = myVcs.createRepo(ctx, root); |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
191 List<ChangeSet> csets = repo.collectChanges(root) |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
192 .fromRevision(fromCommits) |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
193 .toRevision(toCommit) |
568
333a1ddcbf94
Changes from subrepos should include from revisions otherwise TeamCity doesn't show them in UI
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
567
diff
changeset
|
194 .includeFromRevision(ctx.includeFromRevisions()) |
567
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
195 .call(); |
568
333a1ddcbf94
Changes from subrepos should include from revisions otherwise TeamCity doesn't show them in UI
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
567
diff
changeset
|
196 if (!ctx.includeFromRevisions()) { |
333a1ddcbf94
Changes from subrepos should include from revisions otherwise TeamCity doesn't show them in UI
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
567
diff
changeset
|
197 Iterator<ChangeSet> iter = csets.iterator(); |
333a1ddcbf94
Changes from subrepos should include from revisions otherwise TeamCity doesn't show them in UI
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
567
diff
changeset
|
198 while (iter.hasNext()) { |
333a1ddcbf94
Changes from subrepos should include from revisions otherwise TeamCity doesn't show them in UI
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
567
diff
changeset
|
199 ChangeSet cset = iter.next(); |
333a1ddcbf94
Changes from subrepos should include from revisions otherwise TeamCity doesn't show them in UI
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
567
diff
changeset
|
200 if (fromVersions.contains(cset.getId())) |
333a1ddcbf94
Changes from subrepos should include from revisions otherwise TeamCity doesn't show them in UI
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
567
diff
changeset
|
201 iter.remove(); |
333a1ddcbf94
Changes from subrepos should include from revisions otherwise TeamCity doesn't show them in UI
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
567
diff
changeset
|
202 } |
567
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
203 } |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
204 return csets; |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
205 } catch (UnknownRevisionException e) { |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
206 Loggers.VCS.warn("Revision '" + e.getRevision() + "' is unknown, will return no changes"); |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
207 return emptyList(); |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
208 } |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
209 } |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
210 |
691 | 211 private ModificationData createModificationData(@NotNull final OperationContext ctx, |
567
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
212 @NotNull final ChangeSet cset, |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
213 @NotNull final VcsRoot root, |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
214 @NotNull final CheckoutRules checkoutRules) throws VcsException { |
691 | 215 final ModificationData result = ModificationDataFactory.createModificationData(ctx, cset, root, checkoutRules); |
600
6c480513e5c2
Optimize subrepo changes calculation: reuse subrepo revision table calculated for parent commit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
595
diff
changeset
|
216 result.setAttributes(getAttributes(ctx, root, result)); |
567
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
217 return result; |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
218 } |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
219 |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
220 @NotNull |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
221 private List<ModificationData> getSubrepoChanges(@NotNull OperationContext ctx, @NotNull VcsRoot root, @NotNull List<ModificationData> changes) throws VcsException { |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
222 if (changes.isEmpty()) |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
223 return emptyList(); |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
224 |
568
333a1ddcbf94
Changes from subrepos should include from revisions otherwise TeamCity doesn't show them in UI
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
567
diff
changeset
|
225 ctx.setIncludeFromRevisions(true); |
333a1ddcbf94
Changes from subrepos should include from revisions otherwise TeamCity doesn't show them in UI
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
567
diff
changeset
|
226 |
567
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
227 HgVcsRoot hgRoot = myHgVcsRootFactory.createHgRoot(root); |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
228 if (!detectSubrepoChanges(hgRoot)) |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
229 return emptyList(); |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
230 |
595
f2a2bf159f4c
Eliminate SubrepoConfigChange usages
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
594
diff
changeset
|
231 List<HgSubrepoConfigChange> subrepoConfigChanges = getSubrepoConfigChanges(ctx, changes); |
567
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
232 List<ModificationData> subrepoChanges = new ArrayList<ModificationData>(); |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
233 |
595
f2a2bf159f4c
Eliminate SubrepoConfigChange usages
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
594
diff
changeset
|
234 for (HgSubrepoConfigChange configChange : subrepoConfigChanges) { |
f2a2bf159f4c
Eliminate SubrepoConfigChange usages
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
594
diff
changeset
|
235 SubRepo current = configChange.getCurrent(); |
f2a2bf159f4c
Eliminate SubrepoConfigChange usages
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
594
diff
changeset
|
236 assert current != null; |
f2a2bf159f4c
Eliminate SubrepoConfigChange usages
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
594
diff
changeset
|
237 |
f2a2bf159f4c
Eliminate SubrepoConfigChange usages
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
594
diff
changeset
|
238 String subrepoUrl = current.url(); |
f2a2bf159f4c
Eliminate SubrepoConfigChange usages
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
594
diff
changeset
|
239 String curRevision = current.revision(); |
f2a2bf159f4c
Eliminate SubrepoConfigChange usages
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
594
diff
changeset
|
240 List<String> prevRevisions = new ArrayList<String>(0); |
f2a2bf159f4c
Eliminate SubrepoConfigChange usages
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
594
diff
changeset
|
241 for (SubRepo prevSubrepo : configChange.getPrevious()) { |
f2a2bf159f4c
Eliminate SubrepoConfigChange usages
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
594
diff
changeset
|
242 prevRevisions.add(prevSubrepo.revision()); |
f2a2bf159f4c
Eliminate SubrepoConfigChange usages
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
594
diff
changeset
|
243 } |
f2a2bf159f4c
Eliminate SubrepoConfigChange usages
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
594
diff
changeset
|
244 String path = configChange.getPath(); |
f2a2bf159f4c
Eliminate SubrepoConfigChange usages
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
594
diff
changeset
|
245 |
f2a2bf159f4c
Eliminate SubrepoConfigChange usages
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
594
diff
changeset
|
246 Map<String, String> subrepoParams = new HashMap<String, String>(hgRoot.getProperties()); |
f2a2bf159f4c
Eliminate SubrepoConfigChange usages
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
594
diff
changeset
|
247 subrepoParams.put(Constants.REPOSITORY_PROP, subrepoUrl); |
f2a2bf159f4c
Eliminate SubrepoConfigChange usages
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
594
diff
changeset
|
248 subrepoParams.put("teamcity.internal.subrepo", "true"); |
f2a2bf159f4c
Eliminate SubrepoConfigChange usages
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
594
diff
changeset
|
249 subrepoParams.put("teamcity.internal.subrepo.path", path); |
f2a2bf159f4c
Eliminate SubrepoConfigChange usages
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
594
diff
changeset
|
250 |
f2a2bf159f4c
Eliminate SubrepoConfigChange usages
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
594
diff
changeset
|
251 VcsRootImpl subrepo = new VcsRootImpl(root.getId(), subrepoParams); |
f2a2bf159f4c
Eliminate SubrepoConfigChange usages
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
594
diff
changeset
|
252 if (ctx.isProcessedSubrepoChanges(subrepo, prevRevisions, curRevision)) |
567
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
253 continue; |
595
f2a2bf159f4c
Eliminate SubrepoConfigChange usages
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
594
diff
changeset
|
254 List<ModificationData> subChanges = collectChanges(ctx, subrepo, prevRevisions, curRevision, CheckoutRules.DEFAULT); |
567
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
255 for (ModificationData m : subChanges) { |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
256 if (!ctx.isReportedModification(m)) { |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
257 subrepoChanges.add(m); |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
258 ctx.markAsReported(m); |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
259 } |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
260 } |
595
f2a2bf159f4c
Eliminate SubrepoConfigChange usages
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
594
diff
changeset
|
261 ctx.markProcessedSubrepoChanges(subrepo, prevRevisions, curRevision); |
567
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
262 } |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
263 |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
264 List<ModificationData> subSubrepoChanges = getSubrepoChanges(ctx, root, subrepoChanges); |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
265 subrepoChanges.addAll(subSubrepoChanges); |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
266 return subrepoChanges; |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
267 } |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
268 |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
269 |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
270 private boolean detectSubrepoChanges(@NotNull HgVcsRoot root) { |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
271 return myConfig.detectSubrepoChanges() && root.detectSubrepoChanges(); |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
272 } |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
273 |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
274 |
595
f2a2bf159f4c
Eliminate SubrepoConfigChange usages
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
594
diff
changeset
|
275 private List<HgSubrepoConfigChange> getSubrepoConfigChanges(@NotNull OperationContext ctx, @NotNull List<ModificationData> mainRootChanges) throws VcsException { |
f2a2bf159f4c
Eliminate SubrepoConfigChange usages
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
594
diff
changeset
|
276 List<HgSubrepoConfigChange> subrepoConfigChanges = new ArrayList<HgSubrepoConfigChange>(); |
567
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
277 for (ModificationData m : mainRootChanges) { |
594
9cbf9205208e
Do not report subrepo config changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
593
diff
changeset
|
278 subrepoConfigChanges.addAll(getSubrepoConfigChanges(ctx, m)); |
567
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
279 } |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
280 return subrepoConfigChanges; |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
281 } |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
282 |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
283 |
594
9cbf9205208e
Do not report subrepo config changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
593
diff
changeset
|
284 @NotNull |
595
f2a2bf159f4c
Eliminate SubrepoConfigChange usages
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
594
diff
changeset
|
285 private List<HgSubrepoConfigChange> getSubrepoConfigChanges(@NotNull OperationContext ctx, @NotNull ModificationData m) throws VcsException { |
f2a2bf159f4c
Eliminate SubrepoConfigChange usages
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
594
diff
changeset
|
286 List<HgSubrepoConfigChange> configChanges = new ArrayList<HgSubrepoConfigChange>(); |
594
9cbf9205208e
Do not report subrepo config changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
593
diff
changeset
|
287 |
9cbf9205208e
Do not report subrepo config changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
593
diff
changeset
|
288 HgVcsRoot mainRoot = myHgVcsRootFactory.createHgRoot(m.getVcsRoot()); |
9cbf9205208e
Do not report subrepo config changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
593
diff
changeset
|
289 ServerHgRepo repo = myVcs.createRepo(ctx, mainRoot); |
600
6c480513e5c2
Optimize subrepo changes calculation: reuse subrepo revision table calculated for parent commit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
595
diff
changeset
|
290 for (HgSubrepoConfigChange c : repo.getSubrepoConfigChanges(m)) { |
595
f2a2bf159f4c
Eliminate SubrepoConfigChange usages
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
594
diff
changeset
|
291 if (!(c.subrepoUrlChanged() || c.subrepoAdded() || c.subrepoRemoved())) {//report only changes in revisions, because we collect changes only for such changes |
f2a2bf159f4c
Eliminate SubrepoConfigChange usages
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
594
diff
changeset
|
292 //map url and path, relative to the main repository |
f2a2bf159f4c
Eliminate SubrepoConfigChange usages
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
594
diff
changeset
|
293 try { |
594
9cbf9205208e
Do not report subrepo config changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
593
diff
changeset
|
294 SubRepo currentSubrepo = c.getCurrent(); |
9cbf9205208e
Do not report subrepo config changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
593
diff
changeset
|
295 assert currentSubrepo != null; |
9cbf9205208e
Do not report subrepo config changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
593
diff
changeset
|
296 String subrepoUrl = ctx.getStringFromPool(currentSubrepo.resolveUrl(mainRoot.getRepository())); |
9cbf9205208e
Do not report subrepo config changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
593
diff
changeset
|
297 String curRevision = ctx.getStringFromPool(currentSubrepo.revision()); |
595
f2a2bf159f4c
Eliminate SubrepoConfigChange usages
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
594
diff
changeset
|
298 List<SubRepo> prevSubrepos = new ArrayList<SubRepo>(0); |
594
9cbf9205208e
Do not report subrepo config changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
593
diff
changeset
|
299 String path = ctx.getStringFromPool(mainRoot.expandSubrepoPath(c.getPath())); |
595
f2a2bf159f4c
Eliminate SubrepoConfigChange usages
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
594
diff
changeset
|
300 for (SubRepo prevSubrepo : c.getPrevious()) { |
f2a2bf159f4c
Eliminate SubrepoConfigChange usages
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
594
diff
changeset
|
301 prevSubrepos.add(new SubRepo(path, subrepoUrl, ctx.getStringFromPool(prevSubrepo.revision()))); |
f2a2bf159f4c
Eliminate SubrepoConfigChange usages
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
594
diff
changeset
|
302 } |
f2a2bf159f4c
Eliminate SubrepoConfigChange usages
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
594
diff
changeset
|
303 configChanges.add(new HgSubrepoConfigChange(path, prevSubrepos, new SubRepo(path, subrepoUrl, curRevision))); |
f2a2bf159f4c
Eliminate SubrepoConfigChange usages
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
594
diff
changeset
|
304 } catch (URISyntaxException e) { |
f2a2bf159f4c
Eliminate SubrepoConfigChange usages
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
594
diff
changeset
|
305 throw new VcsException(e); |
594
9cbf9205208e
Do not report subrepo config changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
593
diff
changeset
|
306 } |
9cbf9205208e
Do not report subrepo config changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
593
diff
changeset
|
307 } |
567
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
308 } |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
309 return configChanges; |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
310 } |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
311 |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
312 |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
313 @NotNull |
600
6c480513e5c2
Optimize subrepo changes calculation: reuse subrepo revision table calculated for parent commit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
595
diff
changeset
|
314 private Map<String, String> getAttributes(@NotNull OperationContext ctx, @NotNull VcsRoot mainRoot, @NotNull ModificationData m) throws VcsException { |
567
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
315 Map<String, String> attributes = new HashMap<String, String>(); |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
316 HgVcsRoot root = myHgVcsRootFactory.createHgRoot(mainRoot); |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
317 if (detectSubrepoChanges(root)) { |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
318 try { |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
319 ServerHgRepo repo = myVcs.createRepo(ctx, root); |
593
ad112e314be5
Report subrepo revision in each commit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
592
diff
changeset
|
320 SubrepoRevisionAttributesBuilder attrBuilder = new SubrepoRevisionAttributesBuilder(); |
600
6c480513e5c2
Optimize subrepo changes calculation: reuse subrepo revision table calculated for parent commit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
595
diff
changeset
|
321 for (SubRepo s : repo.getSubrepositories(m).values()) { |
641
da9ab34663d8
Do not implement VcsRoot
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
611
diff
changeset
|
322 attrBuilder.addSubrepo(new SubrepoConfig(mainRoot) |
594
9cbf9205208e
Do not report subrepo config changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
593
diff
changeset
|
323 .setSubrepoPath(ctx.getStringFromPool(root.expandSubrepoPath(s.path()))) |
9cbf9205208e
Do not report subrepo config changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
593
diff
changeset
|
324 .setSubrepoRootParamDiff(Constants.REPOSITORY_PROP, ctx.getStringFromPool(s.resolveUrl(root.getRepository()))) |
9cbf9205208e
Do not report subrepo config changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
593
diff
changeset
|
325 .setSubrepoRootParamDiff("teamcity.internal.subrepo", "true") |
9cbf9205208e
Do not report subrepo config changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
593
diff
changeset
|
326 .setSubrepoRootParamDiff("teamcity.internal.subrepo.path", ctx.getStringFromPool(root.expandSubrepoPath(s.path()))) |
9cbf9205208e
Do not report subrepo config changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
593
diff
changeset
|
327 .setSubrepoRevision(ctx.getStringFromPool(s.revision()))); |
593
ad112e314be5
Report subrepo revision in each commit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
592
diff
changeset
|
328 } |
ad112e314be5
Report subrepo revision in each commit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
592
diff
changeset
|
329 attributes.putAll(attrBuilder.buildAttributes()); |
567
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
330 } catch (Exception e) { |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
331 Loggers.VCS.warn("Error while reporting subrepo config changes", e); |
611
a6c708e5bb10
TW-30920 - never use path returned by CheckoutRules.map() method + fix in exception handler
Pavel.Sher
parents:
600
diff
changeset
|
332 if (e instanceof VcsException) |
567
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
333 throw (VcsException) e; |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
334 throw new VcsException(e); |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
335 } |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
336 } |
574
0b7e05418aa2
Reuse empty maps to reduce memory
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
568
diff
changeset
|
337 if (attributes.isEmpty()) |
0b7e05418aa2
Reuse empty maps to reduce memory
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
568
diff
changeset
|
338 return emptyMap(); |
567
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
339 return attributes; |
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
340 } |
600
6c480513e5c2
Optimize subrepo changes calculation: reuse subrepo revision table calculated for parent commit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
595
diff
changeset
|
341 |
6c480513e5c2
Optimize subrepo changes calculation: reuse subrepo revision table calculated for parent commit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
595
diff
changeset
|
342 private final static class AscendingRevNums implements Comparator<ChangeSet> { |
6c480513e5c2
Optimize subrepo changes calculation: reuse subrepo revision table calculated for parent commit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
595
diff
changeset
|
343 public int compare(ChangeSet o1, ChangeSet o2) { |
6c480513e5c2
Optimize subrepo changes calculation: reuse subrepo revision table calculated for parent commit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
595
diff
changeset
|
344 int revnum1 = o1.getRevNumber(); |
6c480513e5c2
Optimize subrepo changes calculation: reuse subrepo revision table calculated for parent commit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
595
diff
changeset
|
345 int revnum2 = o2.getRevNumber(); |
6c480513e5c2
Optimize subrepo changes calculation: reuse subrepo revision table calculated for parent commit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
595
diff
changeset
|
346 if (revnum1 < revnum2) |
6c480513e5c2
Optimize subrepo changes calculation: reuse subrepo revision table calculated for parent commit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
595
diff
changeset
|
347 return -1; |
6c480513e5c2
Optimize subrepo changes calculation: reuse subrepo revision table calculated for parent commit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
595
diff
changeset
|
348 if (revnum1 > revnum2) |
6c480513e5c2
Optimize subrepo changes calculation: reuse subrepo revision table calculated for parent commit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
595
diff
changeset
|
349 return 1; |
6c480513e5c2
Optimize subrepo changes calculation: reuse subrepo revision table calculated for parent commit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
595
diff
changeset
|
350 return 0; |
6c480513e5c2
Optimize subrepo changes calculation: reuse subrepo revision table calculated for parent commit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
595
diff
changeset
|
351 } |
6c480513e5c2
Optimize subrepo changes calculation: reuse subrepo revision table calculated for parent commit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
595
diff
changeset
|
352 } |
567
27cd2503cea3
Extract MercurialCollectChangesPolicy
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
353 } |