Mercurial > hg > mercurial
annotate mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfigImpl.java @ 529:33a6be414903
TW-17489 support bookmarks
Now they can be used in the branch and branch spec fields
author | Dmitry Neverov <dmitry.neverov@jetbrains.com> |
---|---|
date | Sat, 29 Dec 2012 18:32:56 +0400 |
parents | 89e9c06fbc76 |
children | 8468457fe4d3 |
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 |
33a6be414903
TW-17489 support bookmarks
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
514
diff
changeset
|
76 public boolean bookmarksEnabled() { |
33a6be414903
TW-17489 support bookmarks
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
514
diff
changeset
|
77 return TeamCityProperties.getBooleanOrTrue("teamcity.hg.enableBookmarks"); |
33a6be414903
TW-17489 support bookmarks
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
514
diff
changeset
|
78 } |
256
73708ca4521f
Add ability to disable pull protocol
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
79 } |