annotate mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/BaseCommand.java @ 999:1b1cc811e1b6 Jaipur-2018.1.x

Jaipur-2018.1.x branch created
author pavel.sher
date Thu, 21 Jun 2018 17:37:32 +0200
parents 7bf4d943d5bb
children
rev   line source
266
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 229
diff changeset
1 /*
976
7bf4d943d5bb Update copyright
pavel.sher
parents: 889
diff changeset
2 * Copyright 2000-2018 JetBrains s.r.o.
266
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 229
diff changeset
3 *
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 229
diff changeset
4 * Licensed under the Apache License, Version 2.0 (the "License");
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 229
diff changeset
5 * you may not use this file except in compliance with the License.
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 229
diff changeset
6 * You may obtain a copy of the License at
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 229
diff changeset
7 *
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 229
diff changeset
8 * http://www.apache.org/licenses/LICENSE-2.0
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 229
diff changeset
9 *
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 229
diff changeset
10 * Unless required by applicable law or agreed to in writing, software
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 229
diff changeset
11 * distributed under the License is distributed on an "AS IS" BASIS,
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 229
diff changeset
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 229
diff changeset
13 * See the License for the specific language governing permissions and
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 229
diff changeset
14 * limitations under the License.
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 229
diff changeset
15 */
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 229
diff changeset
16 package jetbrains.buildServer.buildTriggers.vcs.mercurial.command;
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 229
diff changeset
17
511
f2666e817701 Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 495
diff changeset
18 import jetbrains.buildServer.vcs.VcsException;
266
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 229
diff changeset
19 import org.jetbrains.annotations.NotNull;
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 229
diff changeset
20
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 229
diff changeset
21 import java.io.File;
369
0b2e9154d26e Merge branch Eluru-6.5.x
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 367 368
diff changeset
22 import java.util.Set;
0b2e9154d26e Merge branch Eluru-6.5.x
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 367 368
diff changeset
23
0b2e9154d26e Merge branch Eluru-6.5.x
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 367 368
diff changeset
24 import static java.util.Collections.emptySet;
266
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 229
diff changeset
25
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 229
diff changeset
26 /**
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 229
diff changeset
27 * @author pavel
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 229
diff changeset
28 */
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 229
diff changeset
29 public class BaseCommand {
280
8c1fd2e565ae Implement mercurial detection on the agents
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 276
diff changeset
30
480
efba721f9a1d TW-23382 agent logs with info, server logs with debug
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 399
diff changeset
31 protected final CommandSettings myCommandSettings;
280
8c1fd2e565ae Implement mercurial detection on the agents
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 276
diff changeset
32 private final String myHgPath;
276
8c10f5cec37d TW-17797 Fix merge-base calculation
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 275
diff changeset
33 private final File myWorkDirectory;
266
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 229
diff changeset
34
773
bb37c581f463 use same way to run every command
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
35 public BaseCommand(@NotNull final CommandSettings commandSettings,
480
efba721f9a1d TW-23382 agent logs with info, server logs with debug
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 399
diff changeset
36 @NotNull final String hgPath,
773
bb37c581f463 use same way to run every command
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
37 @NotNull final File workingDir) {
480
efba721f9a1d TW-23382 agent logs with info, server logs with debug
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 399
diff changeset
38 myCommandSettings = commandSettings;
280
8c1fd2e565ae Implement mercurial detection on the agents
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 276
diff changeset
39 myHgPath = hgPath;
276
8c10f5cec37d TW-17797 Fix merge-base calculation
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 275
diff changeset
40 myWorkDirectory = workingDir;
266
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 229
diff changeset
41 }
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 229
diff changeset
42
276
8c10f5cec37d TW-17797 Fix merge-base calculation
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 275
diff changeset
43 public File getWorkDirectory() {
266
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 229
diff changeset
44 return myWorkDirectory;
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 229
diff changeset
45 }
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 229
diff changeset
46
825
5fbc0d51bea3 cleanup
eugene.petrenko@jetbrains.com
parents: 824
diff changeset
47 @NotNull
480
efba721f9a1d TW-23382 agent logs with info, server logs with debug
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 399
diff changeset
48 protected MercurialCommandLine createCommandLine() {
efba721f9a1d TW-23382 agent logs with info, server logs with debug
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 399
diff changeset
49 MercurialCommandLine cli = createCL();
276
8c10f5cec37d TW-17797 Fix merge-base calculation
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 275
diff changeset
50 cli.setWorkDirectory(myWorkDirectory.getAbsolutePath());
266
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 229
diff changeset
51 return cli;
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 229
diff changeset
52 }
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 229
diff changeset
53
825
5fbc0d51bea3 cleanup
eugene.petrenko@jetbrains.com
parents: 824
diff changeset
54 @NotNull
480
efba721f9a1d TW-23382 agent logs with info, server logs with debug
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 399
diff changeset
55 protected MercurialCommandLine createCL() {
773
bb37c581f463 use same way to run every command
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
56 final MercurialCommandLine cl = new MercurialCommandLine(getPrivateData());
380
3bc8125671b8 Merge branch Eluru-6.5.x
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 369 379
diff changeset
57 cl.setExePath(myHgPath);
493
236d0866a45f Make tests independent from mercurial settings on agent
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 480
diff changeset
58 cl.setEnvParams(myCommandSettings.getHgEnv());
883
39ff04730ccc Report more vcs operation progress
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 852
diff changeset
59 cl.setDescription(getDescription());
773
bb37c581f463 use same way to run every command
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
60
bb37c581f463 use same way to run every command
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
61 //include global arguments if any
bb37c581f463 use same way to run every command
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
62 cl.addParameters(myCommandSettings.getGlobalArguments());
bb37c581f463 use same way to run every command
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
63
266
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 229
diff changeset
64 return cl;
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 229
diff changeset
65 }
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 229
diff changeset
66
773
bb37c581f463 use same way to run every command
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
67 @NotNull
bb37c581f463 use same way to run every command
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
68 protected final CommandResult runCommand(@NotNull MercurialCommandLine cli) throws VcsException {
bb37c581f463 use same way to run every command
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
69 return runCommand(cli, myCommandSettings);
bb37c581f463 use same way to run every command
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
70 }
bb37c581f463 use same way to run every command
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
71
bb37c581f463 use same way to run every command
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
72 @NotNull
bb37c581f463 use same way to run every command
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
73 protected final CommandResult runCommand(@NotNull final MercurialCommandLine cli,
bb37c581f463 use same way to run every command
eugene.petrenko@jetbrains.com
parents: 732
diff changeset
74 @NotNull final CommandSettings commandSettings) throws VcsException {
823
7a7a6e255c71 bind BaseCommand to new settings (work in progress)
eugene.petrenko@jetbrains.com
parents: 819
diff changeset
75
852
d746a9351572 Fix command line lenght limit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 828
diff changeset
76 if (!myCommandSettings.getUseCommandlineViaFileWrapper()) {
889
62ebe9e449a3 Move logging into mercurial command
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 886
diff changeset
77 cli.logCommandStarted(commandSettings.getProgress());
883
39ff04730ccc Report more vcs operation progress
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 852
diff changeset
78 try {
39ff04730ccc Report more vcs operation progress
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 852
diff changeset
79 return CommandUtil.runCommand(cli, commandSettings.setPrivateData(getPrivateData()));
39ff04730ccc Report more vcs operation progress
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 852
diff changeset
80 } finally {
889
62ebe9e449a3 Move logging into mercurial command
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 886
diff changeset
81 cli.logCommandFinished(commandSettings.getProgress());
883
39ff04730ccc Report more vcs operation progress
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 852
diff changeset
82 }
823
7a7a6e255c71 bind BaseCommand to new settings (work in progress)
eugene.petrenko@jetbrains.com
parents: 819
diff changeset
83 }
7a7a6e255c71 bind BaseCommand to new settings (work in progress)
eugene.petrenko@jetbrains.com
parents: 819
diff changeset
84
828
8d02c7b1f812 use HG extension to pass infinite commandline arguments list
eugene.petrenko@jetbrains.com
parents: 827
diff changeset
85 return CommandUtil.runWrappedCommand(cli, commandSettings);
511
f2666e817701 Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 495
diff changeset
86 }
f2666e817701 Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 495
diff changeset
87
827
194c8f8d6e4c add helper to enable bundled plugins for Mercurial
eugene.petrenko@jetbrains.com
parents: 825
diff changeset
88 protected void setupExtensionsFromResource(@NotNull final MercurialCommandLine cli,
194c8f8d6e4c add helper to enable bundled plugins for Mercurial
eugene.petrenko@jetbrains.com
parents: 825
diff changeset
89 @NotNull final File tempDir,
194c8f8d6e4c add helper to enable bundled plugins for Mercurial
eugene.petrenko@jetbrains.com
parents: 825
diff changeset
90 @NotNull final String commandPy) throws VcsException{
194c8f8d6e4c add helper to enable bundled plugins for Mercurial
eugene.petrenko@jetbrains.com
parents: 825
diff changeset
91 CommandUtil.setupExtensionsFromResource(cli, tempDir, commandPy);
194c8f8d6e4c add helper to enable bundled plugins for Mercurial
eugene.petrenko@jetbrains.com
parents: 825
diff changeset
92 }
194c8f8d6e4c add helper to enable bundled plugins for Mercurial
eugene.petrenko@jetbrains.com
parents: 825
diff changeset
93
777
5a146af499ed @NotNull
eugene.petrenko@jetbrains.com
parents: 773
diff changeset
94 @NotNull
369
0b2e9154d26e Merge branch Eluru-6.5.x
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 367 368
diff changeset
95 protected Set<String> getPrivateData() {
0b2e9154d26e Merge branch Eluru-6.5.x
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 367 368
diff changeset
96 return emptySet();
266
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 229
diff changeset
97 }
399
45f25ca68312 Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 380
diff changeset
98
45f25ca68312 Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 380
diff changeset
99 protected String getHgPath() {
45f25ca68312 Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 380
diff changeset
100 return myHgPath;
45f25ca68312 Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 380
diff changeset
101 }
883
39ff04730ccc Report more vcs operation progress
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 852
diff changeset
102
39ff04730ccc Report more vcs operation progress
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 852
diff changeset
103 @NotNull
39ff04730ccc Report more vcs operation progress
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 852
diff changeset
104 protected String getDescription() {
39ff04730ccc Report more vcs operation progress
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 852
diff changeset
105 return "";
39ff04730ccc Report more vcs operation progress
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 852
diff changeset
106 }
266
643fa1236f4e Fix file encoding
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 229
diff changeset
107 }