Mercurial > hg > mercurial
changeset 566:a7719626703d
Ability to limit number of nodes in the DAG
line wrap: on
line diff
--- a/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/LoadDagCommand.java Mon Mar 04 15:25:22 2013 +0400 +++ b/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/LoadDagCommand.java Wed Mar 06 17:44:40 2013 +0400 @@ -12,6 +12,7 @@ public class LoadDagCommand extends VcsRootCommand { private final File myDagLogTemplate; + private int myMaxDagNodesCount; public LoadDagCommand(@NotNull CommandSettings commandSettings, @NotNull String hgPath, @@ -22,12 +23,18 @@ myDagLogTemplate = dagLogTemplate; } + public void setMaxDagNodesCount(int maxDagNodesCount) { + myMaxDagNodesCount = maxDagNodesCount; + } + @NotNull public List<Pair<String, String>> call() throws VcsException { List<Pair<String, String>> edges = new ArrayList<Pair<String, String>>(); MercurialCommandLine cli = createCommandLine(); cli.addParameter("log"); cli.addParameter("--style=" + myDagLogTemplate.getAbsolutePath()); + if (myMaxDagNodesCount > 0) + cli.addParameters("--limit", String.valueOf(myMaxDagNodesCount)); CommandResult res = runCommand(cli); String output = res.getStdout(); String fromNode = null;
--- a/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/OperationContext.java Mon Mar 04 15:25:22 2013 +0400 +++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/OperationContext.java Wed Mar 06 17:44:40 2013 +0400 @@ -165,9 +165,13 @@ dag = repo.loadDag(); myDags.put(rootKey, dag); } - FindIntervalVisitor visitor = new FindIntervalVisitor(dag, myFromState.getBranchRevisions().values()); - dag.breadthFirstSearch(toRevision, visitor); - fromRevisions.addAll(visitor.getEndpoints()); + if (dag.containsNode(toRevision)) { + FindIntervalVisitor visitor = new FindIntervalVisitor(dag, myFromState.getBranchRevisions().values()); + dag.breadthFirstSearch(toRevision, visitor); + fromRevisions.addAll(visitor.getEndpoints()); + } else { + fromRevisions.add(fromRevision); + } } else { fromRevisions.add(fromRevision); }
--- a/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerHgRepo.java Mon Mar 04 15:25:22 2013 +0400 +++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerHgRepo.java Wed Mar 06 17:44:40 2013 +0400 @@ -96,7 +96,9 @@ @NotNull public DAG<String> loadDag() throws VcsException { - List<Pair<String, String>> edges = new LoadDagCommand(myCommandSettingsFactory.create(), myHgPath, myWorkingDir, myAuthSettings, myDagTemplate).call(); + LoadDagCommand loadDag = new LoadDagCommand(myCommandSettingsFactory.create(), myHgPath, myWorkingDir, myAuthSettings, myDagTemplate); + loadDag.setMaxDagNodesCount(myConfig.getMaxDagNodesCount()); + List<Pair<String, String>> edges = loadDag.call(); return DAGs.createFromEdges(edges); } }
--- a/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfig.java Mon Mar 04 15:25:22 2013 +0400 +++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfig.java Wed Mar 06 17:44:40 2013 +0400 @@ -25,4 +25,6 @@ public boolean detectSubrepoChanges(); public boolean bookmarksEnabled(); + + public int getMaxDagNodesCount(); }
--- a/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfigImpl.java Mon Mar 04 15:25:22 2013 +0400 +++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfigImpl.java Wed Mar 06 17:44:40 2013 +0400 @@ -52,6 +52,10 @@ return timeout > 0 ? timeout : DEFAULT_PULL_TIMEOUT_SECONDS; } + public int getMaxDagNodesCount() { + return TeamCityProperties.getInteger("teamcity.hg.maxDagNodesCount", 0); + } + @NotNull public Set<Long> getRevsetParentRootIds() { String parentRootIds = TeamCityProperties.getProperty("teamcity.hg.use.revsets.root.ids", "");
--- a/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfigBuilder.java Mon Mar 04 15:25:22 2013 +0400 +++ b/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfigBuilder.java Wed Mar 06 17:44:40 2013 +0400 @@ -56,6 +56,10 @@ public boolean bookmarksEnabled() { return true; } + + public int getMaxDagNodesCount() { + return 0; + } }; }