Mercurial > hg > mercurial
annotate mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerPluginConfigImpl.java @ 581:d693048e77ae
Schedule cleanup by cron
author | Dmitry Neverov <dmitry.neverov@jetbrains.com> |
---|---|
date | Thu, 28 Mar 2013 17:42:22 +0400 |
parents | da75e774d237 |
children | 49b11c289395 |
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; |
256
73708ca4521f
Add ability to disable pull protocol
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
5 import jetbrains.buildServer.serverSide.TeamCityProperties; |
579
da75e774d237
Clean mirrors on the server relying on last used time
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
578
diff
changeset
|
6 import jetbrains.buildServer.util.Dates; |
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; |
581
d693048e77ae
Schedule cleanup by cron
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
579
diff
changeset
|
9 import org.quartz.CronExpression; |
256
73708ca4521f
Add ability to disable pull protocol
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
10 |
309
33305b2022c2
Take caches and plugin data dirs from PluginConfig
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
280
diff
changeset
|
11 import java.io.File; |
581
d693048e77ae
Schedule cleanup by cron
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
579
diff
changeset
|
12 import java.text.ParseException; |
d693048e77ae
Schedule cleanup by cron
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
579
diff
changeset
|
13 |
d693048e77ae
Schedule cleanup by cron
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
579
diff
changeset
|
14 import static com.intellij.openapi.util.text.StringUtil.isEmpty; |
256
73708ca4521f
Add ability to disable pull protocol
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
15 |
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 * @author dmitry.neverov |
73708ca4521f
Add ability to disable pull protocol
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
18 */ |
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
|
19 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
|
20 |
456
f9bf9ec48347
Option to force use of revsets for some vcs root
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
442
diff
changeset
|
21 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
|
22 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
|
23 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
|
24 |
309
33305b2022c2
Take caches and plugin data dirs from PluginConfig
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
280
diff
changeset
|
25 private final File myCachesDir; |
33305b2022c2
Take caches and plugin data dirs from PluginConfig
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
280
diff
changeset
|
26 |
514
89e9c06fbc76
Move TeamCity-specific logic to separate module
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
511
diff
changeset
|
27 public ServerPluginConfigImpl(@NotNull final CachePaths paths) { |
89e9c06fbc76
Move TeamCity-specific logic to separate module
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
511
diff
changeset
|
28 myCachesDir = paths.getCacheDirectory("mercurial"); |
309
33305b2022c2
Take caches and plugin data dirs from PluginConfig
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
280
diff
changeset
|
29 } |
256
73708ca4521f
Add ability to disable pull protocol
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
30 |
73708ca4521f
Add ability to disable pull protocol
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
31 public boolean isUsePullProtocol() { |
73708ca4521f
Add ability to disable pull protocol
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
32 return TeamCityProperties.getBooleanOrTrue("teamcity.hg.use.pull.protocol"); |
73708ca4521f
Add ability to disable pull protocol
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
33 } |
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
|
34 |
280
8c1fd2e565ae
Implement mercurial detection on the agents
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
256
diff
changeset
|
35 @Nullable |
8c1fd2e565ae
Implement mercurial detection on the agents
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
256
diff
changeset
|
36 public String getHgPath() { |
8c1fd2e565ae
Implement mercurial detection on the agents
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
256
diff
changeset
|
37 return TeamCityProperties.getPropertyOrNull("teamcity.hg.server.path"); |
8c1fd2e565ae
Implement mercurial detection on the agents
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
256
diff
changeset
|
38 } |
309
33305b2022c2
Take caches and plugin data dirs from PluginConfig
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
280
diff
changeset
|
39 |
33305b2022c2
Take caches and plugin data dirs from PluginConfig
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
280
diff
changeset
|
40 @NotNull |
33305b2022c2
Take caches and plugin data dirs from PluginConfig
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
280
diff
changeset
|
41 public File getCachesDir() { |
33305b2022c2
Take caches and plugin data dirs from PluginConfig
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
280
diff
changeset
|
42 return myCachesDir; |
33305b2022c2
Take caches and plugin data dirs from PluginConfig
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
280
diff
changeset
|
43 } |
33305b2022c2
Take caches and plugin data dirs from PluginConfig
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
280
diff
changeset
|
44 |
419
743dc1646555
Add option to not use revsets
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
408
diff
changeset
|
45 public boolean dontUseRevsets() { |
743dc1646555
Add option to not use revsets
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
408
diff
changeset
|
46 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
|
47 } |
743dc1646555
Add option to not use revsets
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
408
diff
changeset
|
48 |
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
|
49 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
|
50 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
|
51 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
|
52 } |
442
6c43663744d9
getCurrentVersion do pull only when remote repository is updated
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
419
diff
changeset
|
53 |
565
844fc8f99c29
Add ability to limit number of nodes in DAG
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
460
diff
changeset
|
54 public int getMaxDagNodesCount() { |
844fc8f99c29
Add ability to limit number of nodes in DAG
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
460
diff
changeset
|
55 return TeamCityProperties.getInteger("teamcity.hg.maxDagNodesCount", 0); |
844fc8f99c29
Add ability to limit number of nodes in DAG
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
460
diff
changeset
|
56 } |
844fc8f99c29
Add ability to limit number of nodes in DAG
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
460
diff
changeset
|
57 |
578
40c085517770
Truncate command output in the logs
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
571
diff
changeset
|
58 public int getLogOutputLimit() { |
40c085517770
Truncate command output in the logs
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
571
diff
changeset
|
59 return TeamCityProperties.getInteger("teamcity.hg.logOutputLimitChars", 2048); |
40c085517770
Truncate command output in the logs
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
571
diff
changeset
|
60 } |
40c085517770
Truncate command output in the logs
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
571
diff
changeset
|
61 |
511
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
460
diff
changeset
|
62 public boolean detectSubrepoChanges() { |
546
dc7aae21ef23
Use single option for subrepo changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
542
diff
changeset
|
63 return TeamCityProperties.getBooleanOrTrue("teamcity.hg.detectSubrepoChanges"); |
538
8468457fe4d3
Report subrepo changes - initial version
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
529
diff
changeset
|
64 } |
8468457fe4d3
Report subrepo changes - initial version
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
529
diff
changeset
|
65 |
529
33a6be414903
TW-17489 support bookmarks
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
514
diff
changeset
|
66 public boolean bookmarksEnabled() { |
33a6be414903
TW-17489 support bookmarks
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
514
diff
changeset
|
67 return TeamCityProperties.getBooleanOrTrue("teamcity.hg.enableBookmarks"); |
33a6be414903
TW-17489 support bookmarks
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
514
diff
changeset
|
68 } |
579
da75e774d237
Clean mirrors on the server relying on last used time
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
578
diff
changeset
|
69 |
da75e774d237
Clean mirrors on the server relying on last used time
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
578
diff
changeset
|
70 public long getMirrorExpirationTimeoutMillis() { |
da75e774d237
Clean mirrors on the server relying on last used time
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
578
diff
changeset
|
71 int days = TeamCityProperties.getInteger("teamcity.hg.mirrorExpirationTimeoutDays", 7); |
da75e774d237
Clean mirrors on the server relying on last used time
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
578
diff
changeset
|
72 return days * Dates.ONE_DAY; |
da75e774d237
Clean mirrors on the server relying on last used time
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
578
diff
changeset
|
73 } |
581
d693048e77ae
Schedule cleanup by cron
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
579
diff
changeset
|
74 |
d693048e77ae
Schedule cleanup by cron
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
579
diff
changeset
|
75 @Nullable |
d693048e77ae
Schedule cleanup by cron
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
579
diff
changeset
|
76 public CronExpression getCleanupCronExpression() { |
d693048e77ae
Schedule cleanup by cron
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
579
diff
changeset
|
77 String cron = TeamCityProperties.getProperty("teamcity.hg.cleanupCron"); |
d693048e77ae
Schedule cleanup by cron
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
579
diff
changeset
|
78 if (isEmpty(cron)) |
d693048e77ae
Schedule cleanup by cron
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
579
diff
changeset
|
79 return null; |
d693048e77ae
Schedule cleanup by cron
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
579
diff
changeset
|
80 try { |
d693048e77ae
Schedule cleanup by cron
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
579
diff
changeset
|
81 return new CronExpression(cron); |
d693048e77ae
Schedule cleanup by cron
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
579
diff
changeset
|
82 } catch (ParseException e) { |
d693048e77ae
Schedule cleanup by cron
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
579
diff
changeset
|
83 LOG.warn("Wrong cron expression " + cron, e); |
d693048e77ae
Schedule cleanup by cron
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
579
diff
changeset
|
84 return null; |
d693048e77ae
Schedule cleanup by cron
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
579
diff
changeset
|
85 } |
d693048e77ae
Schedule cleanup by cron
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
579
diff
changeset
|
86 } |
256
73708ca4521f
Add ability to disable pull protocol
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
87 } |