# HG changeset patch # User Pavel.Sher # Date 1259099191 -10800 # Node ID 0b93ba1c71e56b09b1aca6b7c0a99ab576ef8bbc # Parent 3049d50a0a856d33dd0627ae767f7ef24e61df07 TW-10225 diff -r 3049d50a0a85 -r 0b93ba1c71e5 mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/CatCommand.java --- a/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/CatCommand.java Fri Oct 23 15:34:42 2009 +0400 +++ b/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/CatCommand.java Wed Nov 25 00:46:31 2009 +0300 @@ -22,10 +22,13 @@ import java.io.File; import java.io.IOException; +import java.util.LinkedList; import java.util.List; +import java.util.Queue; public class CatCommand extends BaseCommand { private String myRevId; + private final static int MAX_CMD_LEN = 900; public CatCommand(@NotNull final Settings settings) { super(settings); @@ -49,6 +52,24 @@ } } + Queue paths = new LinkedList(relPaths); + while (!paths.isEmpty()) { + GeneralCommandLine cli = createCommandLine(tempDir); + int cmdSize = cli.getCommandLineString().length(); + + do { + String path = paths.poll(); + cli.addParameter(path); + cmdSize += path.length(); + } while (cmdSize < MAX_CMD_LEN && !paths.isEmpty()); + + runCommand(cli); + } + + return tempDir; + } + + private GeneralCommandLine createCommandLine(final File tempDir) { GeneralCommandLine cli = createCommandLine(); cli.addParameter("cat"); cli.addParameter("-o"); @@ -57,10 +78,6 @@ cli.addParameter("-r"); cli.addParameter(myRevId); } - for (String p: relPaths) { - cli.addParameter(FileUtil.normalizeSeparator(p)); - } - runCommand(cli); - return tempDir; + return cli; } } diff -r 3049d50a0a85 -r 0b93ba1c71e5 mercurial.ipr --- a/mercurial.ipr Fri Oct 23 15:34:42 2009 +0400 +++ b/mercurial.ipr Wed Nov 25 00:46:31 2009 +0300 @@ -34,7 +34,6 @@