Mercurial > hg > mercurial
changeset 565:844fc8f99c29 Faradi-7.1.x
Add ability to limit number of nodes in DAG
author | Dmitry Neverov <dmitry.neverov@jetbrains.com> |
---|---|
date | Wed, 06 Mar 2013 16:56:57 +0400 |
parents | d012388935fb |
children | a7719626703d 7ca3303cfc9e |
files | mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/LoadDagCommand.java mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/OperationContext.java mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerHgRepo.java mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfig.java mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfigImpl.java mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfigBuilder.java |
diffstat | 6 files changed, 27 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/LoadDagCommand.java Wed Mar 06 15:49:37 2013 +0400 +++ b/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/LoadDagCommand.java Wed Mar 06 16:56:57 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 Wed Mar 06 15:49:37 2013 +0400 +++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/OperationContext.java Wed Mar 06 16:56:57 2013 +0400 @@ -99,9 +99,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 Wed Mar 06 15:49:37 2013 +0400 +++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerHgRepo.java Wed Mar 06 16:56:57 2013 +0400 @@ -89,7 +89,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 Wed Mar 06 15:49:37 2013 +0400 +++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfig.java Wed Mar 06 16:56:57 2013 +0400 @@ -21,4 +21,6 @@ @NotNull Set<Long> getRevsetParentRootIds(); + + int getMaxDagNodesCount(); }
--- a/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfigImpl.java Wed Mar 06 15:49:37 2013 +0400 +++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfigImpl.java Wed Mar 06 16:56:57 2013 +0400 @@ -51,6 +51,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 Wed Mar 06 15:49:37 2013 +0400 +++ b/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfigBuilder.java Wed Mar 06 16:56:57 2013 +0400 @@ -47,6 +47,10 @@ public Set<Long> getRevsetParentRootIds() { return new HashSet<Long>(); } + + public int getMaxDagNodesCount() { + return 0; + } }; }