Mercurial > hg > mercurial
annotate mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/SubrepoPatchTest.java @ 693:2c9f7f6d8a12
TODO
author | eugene.petrenko@gmail.com |
---|---|
date | Thu, 19 Dec 2013 19:17:12 +0100 |
parents | 49a03af60439 |
children | 31a1aca3305c |
rev | line source |
---|---|
586
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
1 package jetbrains.buildServer.buildTriggers.vcs.mercurial; |
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
2 |
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
3 import jetbrains.buildServer.vcs.CheckoutRules; |
587
e77ef6cd4ddb
Incremental patch for VCS root with subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
586
diff
changeset
|
4 import jetbrains.buildServer.vcs.VcsRoot; |
586
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
5 import org.testng.annotations.BeforeMethod; |
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
6 import org.testng.annotations.Test; |
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
7 |
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
8 import java.io.File; |
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
9 |
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
10 import static com.intellij.openapi.util.io.FileUtil.delete; |
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
11 import static jetbrains.buildServer.buildTriggers.vcs.mercurial.MercurialSupportBuilder.mercurialSupport; |
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
12 import static jetbrains.buildServer.buildTriggers.vcs.mercurial.Util.buildPatch; |
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
13 import static jetbrains.buildServer.buildTriggers.vcs.mercurial.Util.copyRepository; |
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
14 import static jetbrains.buildServer.buildTriggers.vcs.mercurial.VcsRootBuilder.vcsRoot; |
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
15 |
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
16 @Test |
636
27933884b738
Better test name + reuse temp files
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
587
diff
changeset
|
17 public class SubrepoPatchTest extends BaseMercurialPatchTestCase { |
586
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
18 |
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
19 private MercurialVcsSupport myVcs; |
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
20 private File myRemoteRepo1; |
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
21 private File myRemoteRepo2; |
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
22 private File myRemoteRepo3; |
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
23 private ServerPluginConfig myPluginConfig; |
587
e77ef6cd4ddb
Incremental patch for VCS root with subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
586
diff
changeset
|
24 private VcsRoot myRoot; |
586
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
25 |
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
26 @BeforeMethod |
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
27 public void setUp() throws Exception { |
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
28 super.setUp(); |
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
29 File remoteRepoParentDir = myTempFiles.createTempDir(); |
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
30 myRemoteRepo1 = new File(remoteRepoParentDir, "r1"); |
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
31 myRemoteRepo2 = new File(remoteRepoParentDir, "r2"); |
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
32 myRemoteRepo3 = new File(remoteRepoParentDir, "r3"); |
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
33 copyRepository(new File("mercurial-tests/testData/subrepos/r1"), myRemoteRepo1); |
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
34 copyRepository(new File("mercurial-tests/testData/subrepos/r2"), myRemoteRepo2); |
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
35 copyRepository(new File("mercurial-tests/testData/subrepos/r3"), myRemoteRepo3); |
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
36 myPluginConfig = new ServerPluginConfigBuilder() |
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
37 .cachesDir(myTempFiles.createTempDir()) |
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
38 .detectSubrepoChanges(true) |
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
39 .build(); |
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
40 myVcs = mercurialSupport().withConfig(myPluginConfig).build(); |
587
e77ef6cd4ddb
Incremental patch for VCS root with subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
586
diff
changeset
|
41 myRoot = vcsRoot().withUrl(myRemoteRepo1.getAbsolutePath()).withSubrepoChanges(true).build(); |
586
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
42 } |
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
43 |
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
44 @Override |
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
45 protected String getTestDataPath() { |
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
46 return "mercurial-tests/testData"; |
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
47 } |
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
48 |
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
49 |
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
50 public void clean_patch_should_use_subrepo_clones_on_the_server() throws Exception { |
587
e77ef6cd4ddb
Incremental patch for VCS root with subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
586
diff
changeset
|
51 //this makes plugin to clone r1 and its subrepos |
e77ef6cd4ddb
Incremental patch for VCS root with subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
586
diff
changeset
|
52 myVcs.getCollectChangesPolicy().collectChanges(myRoot, "e4eced2b7381", "d64d9799c143", CheckoutRules.DEFAULT); |
586
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
53 |
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
54 //delete remote subrepo to make sure patch is build from the clone on the server |
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
55 delete(myRemoteRepo3); |
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
56 |
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
57 setName("clean_patch_with_subrepositories"); |
587
e77ef6cd4ddb
Incremental patch for VCS root with subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
586
diff
changeset
|
58 checkPatchResult(buildPatch(myVcs, myRoot, null, "d350e7209906", CheckoutRules.DEFAULT).toByteArray()); |
586
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
59 } |
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
60 |
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
61 |
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
62 public void clean_patch_should_use_subrepo_clones_on_the_server_recursive_case() throws Exception { |
587
e77ef6cd4ddb
Incremental patch for VCS root with subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
586
diff
changeset
|
63 //this makes plugin to clone r1 and its subrepos |
e77ef6cd4ddb
Incremental patch for VCS root with subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
586
diff
changeset
|
64 myVcs.getCollectChangesPolicy().collectChanges(myRoot, "e4eced2b7381", "d64d9799c143", CheckoutRules.DEFAULT); |
586
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
65 |
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
66 //delete remote subrepos to make sure patch is build from the clone on the server |
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
67 delete(myRemoteRepo2); |
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
68 delete(myRemoteRepo3); |
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
69 |
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
70 setName("clean_patch_recursive_subrepos"); |
587
e77ef6cd4ddb
Incremental patch for VCS root with subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
586
diff
changeset
|
71 checkPatchResult(buildPatch(myVcs, myRoot, null, "d64d9799c143", CheckoutRules.DEFAULT).toByteArray()); |
e77ef6cd4ddb
Incremental patch for VCS root with subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
586
diff
changeset
|
72 } |
e77ef6cd4ddb
Incremental patch for VCS root with subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
586
diff
changeset
|
73 |
e77ef6cd4ddb
Incremental patch for VCS root with subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
586
diff
changeset
|
74 |
e77ef6cd4ddb
Incremental patch for VCS root with subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
586
diff
changeset
|
75 public void incremental_patch_subrepo_revision_changed() throws Exception { |
e77ef6cd4ddb
Incremental patch for VCS root with subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
586
diff
changeset
|
76 setName("inc_patch_subrepo_revision_changed"); |
e77ef6cd4ddb
Incremental patch for VCS root with subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
586
diff
changeset
|
77 checkPatchResult(buildPatch(myVcs, myRoot, "d350e7209906", "09c256b6163e", CheckoutRules.DEFAULT).toByteArray()); |
e77ef6cd4ddb
Incremental patch for VCS root with subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
586
diff
changeset
|
78 } |
e77ef6cd4ddb
Incremental patch for VCS root with subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
586
diff
changeset
|
79 |
e77ef6cd4ddb
Incremental patch for VCS root with subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
586
diff
changeset
|
80 |
e77ef6cd4ddb
Incremental patch for VCS root with subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
586
diff
changeset
|
81 public void incremental_patch_subrepo_added() throws Exception { |
e77ef6cd4ddb
Incremental patch for VCS root with subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
586
diff
changeset
|
82 setName("inc_patch_subrepo_added"); |
e77ef6cd4ddb
Incremental patch for VCS root with subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
586
diff
changeset
|
83 checkPatchResult(buildPatch(myVcs, myRoot, "4d7b3db8779f", "d350e7209906", CheckoutRules.DEFAULT).toByteArray()); |
e77ef6cd4ddb
Incremental patch for VCS root with subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
586
diff
changeset
|
84 } |
e77ef6cd4ddb
Incremental patch for VCS root with subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
586
diff
changeset
|
85 |
e77ef6cd4ddb
Incremental patch for VCS root with subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
586
diff
changeset
|
86 |
e77ef6cd4ddb
Incremental patch for VCS root with subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
586
diff
changeset
|
87 public void incremental_patch_subrepo_removed() throws Exception { |
e77ef6cd4ddb
Incremental patch for VCS root with subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
586
diff
changeset
|
88 setName("inc_patch_subrepo_removed"); |
e77ef6cd4ddb
Incremental patch for VCS root with subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
586
diff
changeset
|
89 checkPatchResult(buildPatch(myVcs, myRoot, "34017377d9c3", "4d7b3db8779f", CheckoutRules.DEFAULT).toByteArray()); |
e77ef6cd4ddb
Incremental patch for VCS root with subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
586
diff
changeset
|
90 } |
e77ef6cd4ddb
Incremental patch for VCS root with subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
586
diff
changeset
|
91 |
e77ef6cd4ddb
Incremental patch for VCS root with subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
586
diff
changeset
|
92 |
e77ef6cd4ddb
Incremental patch for VCS root with subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
586
diff
changeset
|
93 public void incremental_patch_subrepo_url_changed() throws Exception { |
e77ef6cd4ddb
Incremental patch for VCS root with subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
586
diff
changeset
|
94 setName("inc_patch_subrepo_url_changed"); |
e77ef6cd4ddb
Incremental patch for VCS root with subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
586
diff
changeset
|
95 checkPatchResult(buildPatch(myVcs, myRoot, "34017377d9c3", "d64d9799c143", CheckoutRules.DEFAULT).toByteArray()); |
e77ef6cd4ddb
Incremental patch for VCS root with subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
586
diff
changeset
|
96 } |
e77ef6cd4ddb
Incremental patch for VCS root with subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
586
diff
changeset
|
97 |
e77ef6cd4ddb
Incremental patch for VCS root with subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
586
diff
changeset
|
98 |
e77ef6cd4ddb
Incremental patch for VCS root with subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
586
diff
changeset
|
99 public void incremental_patch_with_checkout_rules() throws Exception { |
e77ef6cd4ddb
Incremental patch for VCS root with subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
586
diff
changeset
|
100 setName("inc_patch_subrepo_with_checkout_rules"); |
e77ef6cd4ddb
Incremental patch for VCS root with subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
586
diff
changeset
|
101 checkPatchResult(buildPatch(myVcs, myRoot, "d350e7209906", "09c256b6163e", new CheckoutRules("+:.=>subdir")).toByteArray()); |
e77ef6cd4ddb
Incremental patch for VCS root with subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
586
diff
changeset
|
102 } |
e77ef6cd4ddb
Incremental patch for VCS root with subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
586
diff
changeset
|
103 |
e77ef6cd4ddb
Incremental patch for VCS root with subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
586
diff
changeset
|
104 |
e77ef6cd4ddb
Incremental patch for VCS root with subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
586
diff
changeset
|
105 public void incremental_patch_with_excluding_checkout_rules() throws Exception { |
e77ef6cd4ddb
Incremental patch for VCS root with subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
586
diff
changeset
|
106 setName("inc_patch_subrepo_with_excluding_checkout_rules"); |
e77ef6cd4ddb
Incremental patch for VCS root with subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
586
diff
changeset
|
107 checkPatchResult(buildPatch(myVcs, myRoot, "d350e7209906", "09c256b6163e", new CheckoutRules("+:.=>subdir\n-:r2")).toByteArray()); |
586
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
108 } |
aa515fa1f626
Clean patch uses subrepo mirrors on the server
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
109 } |