annotate mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/VcsRootBuilder.java @ 280:8c1fd2e565ae

Implement mercurial detection on the agents When agent starts, hg-plugin detects installed hg (searches it in the $PATH). If plugin is able to run hg and hg has an approrpiate version (1.5.2+), then plugin reports path to hg in the 'teamcity.hg.agent.path' parameter. This parameter can be used in the "HG command path" field in a VCS root settings, configurations with such root will be run only on agents which report path to hg. Also user can set this parameter manually in the buildAgent.properties. A server side of plugin first checks value of internal property 'teamcity.hg.server.path' and if property is set, its value is used. Second, plugin tries to use path from the settings of VCS root: if path is equal to '%teamcity.hg.agent.path%' - use 'hg' as path, otherwise use a value from the root. With such order old setups, where path in the VCS root was used on both server and agent, will continue to work. New VCS roots with references in the path will also work if hg is in the $PATH on the server or internal property is set.
author Dmitry Neverov <dmitry.neverov@jetbrains.com>
date Fri, 19 Aug 2011 15:21:38 +0400
parents 8c10f5cec37d
children 33305b2022c2
rev   line source
275
13f3e7d0c42c Implement VersionCommand
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
1 package jetbrains.buildServer.buildTriggers.vcs.mercurial;
13f3e7d0c42c Implement VersionCommand
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
2
13f3e7d0c42c Implement VersionCommand
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
3 import jetbrains.buildServer.vcs.impl.VcsRootImpl;
13f3e7d0c42c Implement VersionCommand
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
4 import org.jetbrains.annotations.NotNull;
13f3e7d0c42c Implement VersionCommand
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
5
13f3e7d0c42c Implement VersionCommand
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
6 import java.io.IOException;
13f3e7d0c42c Implement VersionCommand
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
7
13f3e7d0c42c Implement VersionCommand
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
8 /**
13f3e7d0c42c Implement VersionCommand
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
9 * @author dmitry.neverov
13f3e7d0c42c Implement VersionCommand
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
10 */
13f3e7d0c42c Implement VersionCommand
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
11 public class VcsRootBuilder {
13f3e7d0c42c Implement VersionCommand
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
12
13f3e7d0c42c Implement VersionCommand
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
13 private String myRepository;
13f3e7d0c42c Implement VersionCommand
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
14 private String myUsername;
13f3e7d0c42c Implement VersionCommand
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
15 private String myPassword;
276
8c10f5cec37d TW-17797 Fix merge-base calculation
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 275
diff changeset
16 private String myBranch;
275
13f3e7d0c42c Implement VersionCommand
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
17 private long myRootId = 1L;
280
8c1fd2e565ae Implement mercurial detection on the agents
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 276
diff changeset
18 private String myHgPath;
275
13f3e7d0c42c Implement VersionCommand
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
19
13f3e7d0c42c Implement VersionCommand
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
20 public VcsRootImpl build() throws IOException {
13f3e7d0c42c Implement VersionCommand
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
21 VcsRootImpl vcsRoot = new VcsRootImpl(1, Constants.VCS_NAME);
13f3e7d0c42c Implement VersionCommand
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
22 vcsRoot.addProperty(Constants.REPOSITORY_PROP, myRepository);
280
8c1fd2e565ae Implement mercurial detection on the agents
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 276
diff changeset
23 vcsRoot.addProperty(Constants.HG_COMMAND_PATH_PROP, myHgPath != null ? myHgPath : Util.getHgPath());
275
13f3e7d0c42c Implement VersionCommand
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
24 vcsRoot.addProperty(Constants.USERNAME, myUsername);
13f3e7d0c42c Implement VersionCommand
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
25 vcsRoot.addProperty(Constants.PASSWORD, myPassword);
276
8c10f5cec37d TW-17797 Fix merge-base calculation
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 275
diff changeset
26 vcsRoot.addProperty(Constants.BRANCH_NAME_PROP, myBranch);
275
13f3e7d0c42c Implement VersionCommand
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
27 return vcsRoot;
13f3e7d0c42c Implement VersionCommand
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
28 }
13f3e7d0c42c Implement VersionCommand
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
29
13f3e7d0c42c Implement VersionCommand
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
30
13f3e7d0c42c Implement VersionCommand
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
31 public VcsRootBuilder repository(@NotNull String repository) {
13f3e7d0c42c Implement VersionCommand
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
32 myRepository = repository;
13f3e7d0c42c Implement VersionCommand
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
33 return this;
13f3e7d0c42c Implement VersionCommand
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
34 }
13f3e7d0c42c Implement VersionCommand
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
35
13f3e7d0c42c Implement VersionCommand
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
36
13f3e7d0c42c Implement VersionCommand
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
37 public VcsRootBuilder username(@NotNull String username) {
13f3e7d0c42c Implement VersionCommand
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
38 myUsername = username;
13f3e7d0c42c Implement VersionCommand
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
39 return this;
13f3e7d0c42c Implement VersionCommand
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
40 }
13f3e7d0c42c Implement VersionCommand
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
41
13f3e7d0c42c Implement VersionCommand
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
42
13f3e7d0c42c Implement VersionCommand
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
43 public VcsRootBuilder password(@NotNull String password) {
13f3e7d0c42c Implement VersionCommand
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
44 myPassword = password;
13f3e7d0c42c Implement VersionCommand
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
45 return this;
13f3e7d0c42c Implement VersionCommand
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
46 }
13f3e7d0c42c Implement VersionCommand
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
47
13f3e7d0c42c Implement VersionCommand
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
48
276
8c10f5cec37d TW-17797 Fix merge-base calculation
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 275
diff changeset
49 public VcsRootBuilder branch(@NotNull String branch) {
8c10f5cec37d TW-17797 Fix merge-base calculation
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 275
diff changeset
50 myBranch = branch;
8c10f5cec37d TW-17797 Fix merge-base calculation
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 275
diff changeset
51 return this;
8c10f5cec37d TW-17797 Fix merge-base calculation
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 275
diff changeset
52 }
8c10f5cec37d TW-17797 Fix merge-base calculation
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 275
diff changeset
53
8c10f5cec37d TW-17797 Fix merge-base calculation
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 275
diff changeset
54
275
13f3e7d0c42c Implement VersionCommand
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
55 public VcsRootBuilder rootId(long rootId) {
13f3e7d0c42c Implement VersionCommand
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
56 myRootId = rootId;
13f3e7d0c42c Implement VersionCommand
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
57 return this;
13f3e7d0c42c Implement VersionCommand
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
58 }
280
8c1fd2e565ae Implement mercurial detection on the agents
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 276
diff changeset
59
8c1fd2e565ae Implement mercurial detection on the agents
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 276
diff changeset
60
8c1fd2e565ae Implement mercurial detection on the agents
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 276
diff changeset
61 public VcsRootBuilder hgPath(String hgPath) {
8c1fd2e565ae Implement mercurial detection on the agents
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 276
diff changeset
62 myHgPath = hgPath;
8c1fd2e565ae Implement mercurial detection on the agents
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 276
diff changeset
63 return this;
8c1fd2e565ae Implement mercurial detection on the agents
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 276
diff changeset
64 }
275
13f3e7d0c42c Implement VersionCommand
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
65 }