annotate mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfigImpl.java @ 538:8468457fe4d3

Report subrepo changes - initial version
author Dmitry Neverov <dmitry.neverov@jetbrains.com>
date Tue, 29 Jan 2013 20:53:19 +0400
parents 33a6be414903
children 0f06e0e10540
rev   line source
256
73708ca4521f Add ability to disable pull protocol
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
1 package jetbrains.buildServer.buildTriggers.vcs.mercurial;
73708ca4521f Add ability to disable pull protocol
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
2
456
f9bf9ec48347 Option to force use of revsets for some vcs root
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 442
diff changeset
3 import com.intellij.openapi.diagnostic.Logger;
514
89e9c06fbc76 Move TeamCity-specific logic to separate module
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 511
diff changeset
4 import jetbrains.buildServer.serverSide.CachePaths;
309
33305b2022c2 Take caches and plugin data dirs from PluginConfig
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 280
diff changeset
5 import jetbrains.buildServer.serverSide.ServerPaths;
256
73708ca4521f Add ability to disable pull protocol
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
6 import jetbrains.buildServer.serverSide.TeamCityProperties;
309
33305b2022c2 Take caches and plugin data dirs from PluginConfig
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 280
diff changeset
7 import org.jetbrains.annotations.NotNull;
280
8c1fd2e565ae Implement mercurial detection on the agents
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 256
diff changeset
8 import org.jetbrains.annotations.Nullable;
256
73708ca4521f Add ability to disable pull protocol
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
9
309
33305b2022c2 Take caches and plugin data dirs from PluginConfig
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 280
diff changeset
10 import java.io.File;
456
f9bf9ec48347 Option to force use of revsets for some vcs root
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 442
diff changeset
11 import java.util.HashSet;
f9bf9ec48347 Option to force use of revsets for some vcs root
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 442
diff changeset
12 import java.util.Set;
f9bf9ec48347 Option to force use of revsets for some vcs root
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 442
diff changeset
13
f9bf9ec48347 Option to force use of revsets for some vcs root
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 442
diff changeset
14 import static com.intellij.openapi.util.text.StringUtil.isEmpty;
f9bf9ec48347 Option to force use of revsets for some vcs root
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 442
diff changeset
15 import static java.util.Collections.emptySet;
256
73708ca4521f Add ability to disable pull protocol
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
16
73708ca4521f Add ability to disable pull protocol
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
17 /**
73708ca4521f Add ability to disable pull protocol
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
18 * @author dmitry.neverov
73708ca4521f Add ability to disable pull protocol
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
19 */
329
ef091b782acc Add ability to specify timeout for pull operation (teamcity.hg.pull.timeout.seconds)
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 256
diff changeset
20 public class ServerPluginConfigImpl implements ServerPluginConfig {
ef091b782acc Add ability to specify timeout for pull operation (teamcity.hg.pull.timeout.seconds)
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 256
diff changeset
21
456
f9bf9ec48347 Option to force use of revsets for some vcs root
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 442
diff changeset
22 private static final Logger LOG = Logger.getInstance(ServerPluginConfigImpl.class.getName());
329
ef091b782acc Add ability to specify timeout for pull operation (teamcity.hg.pull.timeout.seconds)
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 256
diff changeset
23 private static final String PULL_TIMEOUT_SECONDS = "teamcity.hg.pull.timeout.seconds";
330
dd55596a5753 Add ability to specify timeout for pull operation (teamcity.hg.pull.timeout.seconds)
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 309
diff changeset
24 public static final int DEFAULT_PULL_TIMEOUT_SECONDS = 3600;
dd55596a5753 Add ability to specify timeout for pull operation (teamcity.hg.pull.timeout.seconds)
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 309
diff changeset
25
309
33305b2022c2 Take caches and plugin data dirs from PluginConfig
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 280
diff changeset
26 private final File myCachesDir;
33305b2022c2 Take caches and plugin data dirs from PluginConfig
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 280
diff changeset
27
514
89e9c06fbc76 Move TeamCity-specific logic to separate module
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 511
diff changeset
28 public ServerPluginConfigImpl(@NotNull final CachePaths paths) {
89e9c06fbc76 Move TeamCity-specific logic to separate module
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 511
diff changeset
29 myCachesDir = paths.getCacheDirectory("mercurial");
309
33305b2022c2 Take caches and plugin data dirs from PluginConfig
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 280
diff changeset
30 }
256
73708ca4521f Add ability to disable pull protocol
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
31
73708ca4521f Add ability to disable pull protocol
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
32 public boolean isUsePullProtocol() {
73708ca4521f Add ability to disable pull protocol
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
33 return TeamCityProperties.getBooleanOrTrue("teamcity.hg.use.pull.protocol");
73708ca4521f Add ability to disable pull protocol
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
34 }
329
ef091b782acc Add ability to specify timeout for pull operation (teamcity.hg.pull.timeout.seconds)
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 256
diff changeset
35
280
8c1fd2e565ae Implement mercurial detection on the agents
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 256
diff changeset
36 @Nullable
8c1fd2e565ae Implement mercurial detection on the agents
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 256
diff changeset
37 public String getHgPath() {
8c1fd2e565ae Implement mercurial detection on the agents
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 256
diff changeset
38 return TeamCityProperties.getPropertyOrNull("teamcity.hg.server.path");
8c1fd2e565ae Implement mercurial detection on the agents
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 256
diff changeset
39 }
309
33305b2022c2 Take caches and plugin data dirs from PluginConfig
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 280
diff changeset
40
33305b2022c2 Take caches and plugin data dirs from PluginConfig
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 280
diff changeset
41 @NotNull
33305b2022c2 Take caches and plugin data dirs from PluginConfig
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 280
diff changeset
42 public File getCachesDir() {
33305b2022c2 Take caches and plugin data dirs from PluginConfig
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 280
diff changeset
43 return myCachesDir;
33305b2022c2 Take caches and plugin data dirs from PluginConfig
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 280
diff changeset
44 }
33305b2022c2 Take caches and plugin data dirs from PluginConfig
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 280
diff changeset
45
419
743dc1646555 Add option to not use revsets
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 408
diff changeset
46 public boolean dontUseRevsets() {
743dc1646555 Add option to not use revsets
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 408
diff changeset
47 return TeamCityProperties.getBoolean("teamcity.hg.dont.use.revsets");
743dc1646555 Add option to not use revsets
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 408
diff changeset
48 }
743dc1646555 Add option to not use revsets
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 408
diff changeset
49
329
ef091b782acc Add ability to specify timeout for pull operation (teamcity.hg.pull.timeout.seconds)
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 256
diff changeset
50 public int getPullTimeout() {
ef091b782acc Add ability to specify timeout for pull operation (teamcity.hg.pull.timeout.seconds)
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 256
diff changeset
51 int timeout = TeamCityProperties.getInteger(PULL_TIMEOUT_SECONDS, DEFAULT_PULL_TIMEOUT_SECONDS);
ef091b782acc Add ability to specify timeout for pull operation (teamcity.hg.pull.timeout.seconds)
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 256
diff changeset
52 return timeout > 0 ? timeout : DEFAULT_PULL_TIMEOUT_SECONDS;
ef091b782acc Add ability to specify timeout for pull operation (teamcity.hg.pull.timeout.seconds)
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 256
diff changeset
53 }
442
6c43663744d9 getCurrentVersion do pull only when remote repository is updated
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 419
diff changeset
54
456
f9bf9ec48347 Option to force use of revsets for some vcs root
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 442
diff changeset
55 @NotNull
f9bf9ec48347 Option to force use of revsets for some vcs root
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 442
diff changeset
56 public Set<Long> getRevsetParentRootIds() {
f9bf9ec48347 Option to force use of revsets for some vcs root
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 442
diff changeset
57 String parentRootIds = TeamCityProperties.getProperty("teamcity.hg.use.revsets.root.ids", "");
f9bf9ec48347 Option to force use of revsets for some vcs root
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 442
diff changeset
58 if (isEmpty(parentRootIds))
f9bf9ec48347 Option to force use of revsets for some vcs root
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 442
diff changeset
59 return emptySet();
f9bf9ec48347 Option to force use of revsets for some vcs root
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 442
diff changeset
60
f9bf9ec48347 Option to force use of revsets for some vcs root
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 442
diff changeset
61 Set<Long> ids = new HashSet<Long>();
f9bf9ec48347 Option to force use of revsets for some vcs root
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 442
diff changeset
62 for (String parentRootId : parentRootIds.split(",")) {
f9bf9ec48347 Option to force use of revsets for some vcs root
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 442
diff changeset
63 try {
f9bf9ec48347 Option to force use of revsets for some vcs root
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 442
diff changeset
64 ids.add(Long.parseLong(parentRootId));
f9bf9ec48347 Option to force use of revsets for some vcs root
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 442
diff changeset
65 } catch (Exception e) {
f9bf9ec48347 Option to force use of revsets for some vcs root
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 442
diff changeset
66 LOG.warn("Cannot parse rootId \"" + parentRootId + "\", ignore it");
f9bf9ec48347 Option to force use of revsets for some vcs root
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 442
diff changeset
67 }
f9bf9ec48347 Option to force use of revsets for some vcs root
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 442
diff changeset
68 }
f9bf9ec48347 Option to force use of revsets for some vcs root
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 442
diff changeset
69 return ids;
f9bf9ec48347 Option to force use of revsets for some vcs root
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 442
diff changeset
70 }
511
f2666e817701 Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 460
diff changeset
71
f2666e817701 Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 460
diff changeset
72 public boolean detectSubrepoChanges() {
f2666e817701 Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 460
diff changeset
73 return false;
f2666e817701 Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 460
diff changeset
74 }
529
33a6be414903 TW-17489 support bookmarks
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 514
diff changeset
75
538
8468457fe4d3 Report subrepo changes - initial version
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 529
diff changeset
76 public boolean reportSubrepoConfigUpdates() {
8468457fe4d3 Report subrepo changes - initial version
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 529
diff changeset
77 return TeamCityProperties.getBooleanOrTrue("teamcity.hg.reportSubrepoConfigUpdates");
8468457fe4d3 Report subrepo changes - initial version
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 529
diff changeset
78 }
8468457fe4d3 Report subrepo changes - initial version
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 529
diff changeset
79
529
33a6be414903 TW-17489 support bookmarks
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 514
diff changeset
80 public boolean bookmarksEnabled() {
33a6be414903 TW-17489 support bookmarks
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 514
diff changeset
81 return TeamCityProperties.getBooleanOrTrue("teamcity.hg.enableBookmarks");
33a6be414903 TW-17489 support bookmarks
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents: 514
diff changeset
82 }
256
73708ca4521f Add ability to disable pull protocol
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff changeset
83 }