Mercurial > hg > mercurial
annotate mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/HgRepo.java @ 980:1168c4c64d49
Merge branch Indore-2017.2.x
author | Dmitry Neverov <dmitry.neverov@gmail.com> |
---|---|
date | Wed, 24 Jan 2018 17:38:56 +0100 |
parents | 7bf4d943d5bb 38adef4f1b8f |
children | 10dc26b32c35 |
rev | line source |
---|---|
732
31a1aca3305c
Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
730
diff
changeset
|
1 /* |
977 | 2 * Copyright 2000-2018 JetBrains s.r.o. |
732
31a1aca3305c
Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
730
diff
changeset
|
3 * |
31a1aca3305c
Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
730
diff
changeset
|
4 * Licensed under the Apache License, Version 2.0 (the "License"); |
31a1aca3305c
Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
730
diff
changeset
|
5 * you may not use this file except in compliance with the License. |
31a1aca3305c
Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
730
diff
changeset
|
6 * You may obtain a copy of the License at |
31a1aca3305c
Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
730
diff
changeset
|
7 * |
31a1aca3305c
Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
730
diff
changeset
|
8 * http://www.apache.org/licenses/LICENSE-2.0 |
31a1aca3305c
Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
730
diff
changeset
|
9 * |
31a1aca3305c
Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
730
diff
changeset
|
10 * Unless required by applicable law or agreed to in writing, software |
31a1aca3305c
Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
730
diff
changeset
|
11 * distributed under the License is distributed on an "AS IS" BASIS, |
31a1aca3305c
Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
730
diff
changeset
|
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
31a1aca3305c
Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
730
diff
changeset
|
13 * See the License for the specific language governing permissions and |
31a1aca3305c
Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
730
diff
changeset
|
14 * limitations under the License. |
31a1aca3305c
Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
730
diff
changeset
|
15 */ |
31a1aca3305c
Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
730
diff
changeset
|
16 |
399
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
17 package jetbrains.buildServer.buildTriggers.vcs.mercurial; |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
18 |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
19 import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.*; |
478
0a33f3dbd261
Ensure temp dirs are deleted
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
472
diff
changeset
|
20 import jetbrains.buildServer.log.Loggers; |
399
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
21 import jetbrains.buildServer.util.FileUtil; |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
22 import jetbrains.buildServer.vcs.VcsException; |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
23 import org.jetbrains.annotations.NotNull; |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
24 |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
25 import java.io.File; |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
26 import java.io.IOException; |
838
7e461ea697f1
Faster working dir revision calculation
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
834
diff
changeset
|
27 import java.util.ArrayList; |
7e461ea697f1
Faster working dir revision calculation
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
834
diff
changeset
|
28 import java.util.HashMap; |
7e461ea697f1
Faster working dir revision calculation
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
834
diff
changeset
|
29 import java.util.List; |
7e461ea697f1
Faster working dir revision calculation
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
834
diff
changeset
|
30 import java.util.Map; |
399
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
31 |
587
e77ef6cd4ddb
Incremental patch for VCS root with subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
585
diff
changeset
|
32 import static java.util.Arrays.asList; |
511
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
33 import static java.util.Collections.emptyList; |
399
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
34 import static java.util.Collections.emptyMap; |
478
0a33f3dbd261
Ensure temp dirs are deleted
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
472
diff
changeset
|
35 import static jetbrains.buildServer.buildTriggers.vcs.mercurial.HgFileUtil.deleteDir; |
399
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
36 import static jetbrains.buildServer.util.FileUtil.isEmptyDir; |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
37 |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
38 /** |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
39 * @author dmitry.neverov |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
40 */ |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
41 public class HgRepo { |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
42 |
480
efba721f9a1d
TW-23382 agent logs with info, server logs with debug
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
478
diff
changeset
|
43 protected final CommandSettingsFactory myCommandSettingsFactory; |
399
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
44 protected final File myWorkingDir; |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
45 protected final String myHgPath; |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
46 protected final AuthSettings myAuthSettings; |
600
6c480513e5c2
Optimize subrepo changes calculation: reuse subrepo revision table calculated for parent commit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
587
diff
changeset
|
47 protected final Map<String, Map<String, SubRepo>> mySubreposCache = new HashMap<String, Map<String, SubRepo>>(); |
399
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
48 |
480
efba721f9a1d
TW-23382 agent logs with info, server logs with debug
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
478
diff
changeset
|
49 public HgRepo(@NotNull CommandSettingsFactory commandSettingsFactory, |
efba721f9a1d
TW-23382 agent logs with info, server logs with debug
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
478
diff
changeset
|
50 @NotNull File workingDir, |
efba721f9a1d
TW-23382 agent logs with info, server logs with debug
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
478
diff
changeset
|
51 @NotNull String hgPath, |
efba721f9a1d
TW-23382 agent logs with info, server logs with debug
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
478
diff
changeset
|
52 @NotNull AuthSettings authSettings) { |
efba721f9a1d
TW-23382 agent logs with info, server logs with debug
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
478
diff
changeset
|
53 myCommandSettingsFactory = commandSettingsFactory; |
399
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
54 myWorkingDir = workingDir; |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
55 myHgPath = hgPath; |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
56 myAuthSettings = authSettings; |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
57 } |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
58 |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
59 public PullCommand pull() { |
480
efba721f9a1d
TW-23382 agent logs with info, server logs with debug
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
478
diff
changeset
|
60 return new PullCommand(myCommandSettingsFactory.create(), myHgPath, myWorkingDir, myAuthSettings); |
399
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
61 } |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
62 |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
63 public PushCommand push() { |
480
efba721f9a1d
TW-23382 agent logs with info, server logs with debug
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
478
diff
changeset
|
64 return new PushCommand(myCommandSettingsFactory.create(), myHgPath, myWorkingDir, myAuthSettings); |
399
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
65 } |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
66 |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
67 public CloneCommand doClone() { |
480
efba721f9a1d
TW-23382 agent logs with info, server logs with debug
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
478
diff
changeset
|
68 return new CloneCommand(myCommandSettingsFactory.create(), myHgPath, myWorkingDir, myAuthSettings); |
399
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
69 } |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
70 |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
71 public IdentifyCommand id() { |
480
efba721f9a1d
TW-23382 agent logs with info, server logs with debug
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
478
diff
changeset
|
72 return new IdentifyCommand(myCommandSettingsFactory.create(), myHgPath, myWorkingDir, myAuthSettings); |
399
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
73 } |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
74 |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
75 public Init init() { |
480
efba721f9a1d
TW-23382 agent logs with info, server logs with debug
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
478
diff
changeset
|
76 return new Init(myCommandSettingsFactory.create(), myHgPath, myWorkingDir, myAuthSettings); |
399
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
77 } |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
78 |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
79 public LogCommand log() { |
480
efba721f9a1d
TW-23382 agent logs with info, server logs with debug
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
478
diff
changeset
|
80 return new LogCommand(myCommandSettingsFactory.create(), myHgPath, myWorkingDir, myAuthSettings); |
399
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
81 } |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
82 |
720 | 83 @NotNull |
84 public CommitsAndMountPointsCommand logSubstates() throws VcsException { | |
742
091667cc54d5
assert HG version is supported for the command
eugene.petrenko@jetbrains.com
parents:
732
diff
changeset
|
85 return new CommitsAndMountPointsCommand(this, myCommandSettingsFactory.create(), myHgPath, myWorkingDir, myAuthSettings); |
720 | 86 } |
87 | |
399
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
88 public UpdateCommand update() { |
480
efba721f9a1d
TW-23382 agent logs with info, server logs with debug
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
478
diff
changeset
|
89 return new UpdateCommand(myCommandSettingsFactory.create(), myHgPath, myWorkingDir, myAuthSettings); |
399
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
90 } |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
91 |
911
15fce0c26e18
TW-39321 create branch for commit if repository has no branches
Dmitry Neverov <dmitry.neverov@gmail.com>
parents:
870
diff
changeset
|
92 public BranchCommand branch() { |
15fce0c26e18
TW-39321 create branch for commit if repository has no branches
Dmitry Neverov <dmitry.neverov@gmail.com>
parents:
870
diff
changeset
|
93 return new BranchCommand(myCommandSettingsFactory.create(), myHgPath, myWorkingDir); |
15fce0c26e18
TW-39321 create branch for commit if repository has no branches
Dmitry Neverov <dmitry.neverov@gmail.com>
parents:
870
diff
changeset
|
94 } |
15fce0c26e18
TW-39321 create branch for commit if repository has no branches
Dmitry Neverov <dmitry.neverov@gmail.com>
parents:
870
diff
changeset
|
95 |
399
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
96 public BranchesCommand branches() { |
480
efba721f9a1d
TW-23382 agent logs with info, server logs with debug
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
478
diff
changeset
|
97 return new BranchesCommand(myCommandSettingsFactory.create(), myHgPath, myWorkingDir, myAuthSettings); |
399
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
98 } |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
99 |
529
33a6be414903
TW-17489 support bookmarks
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
521
diff
changeset
|
100 public BookmarksCommand bookmarks() { |
33a6be414903
TW-17489 support bookmarks
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
521
diff
changeset
|
101 return new BookmarksCommand(myCommandSettingsFactory.create(), myHgPath, myWorkingDir, myAuthSettings); |
33a6be414903
TW-17489 support bookmarks
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
521
diff
changeset
|
102 } |
33a6be414903
TW-17489 support bookmarks
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
521
diff
changeset
|
103 |
749
63babe8e01a1
support auto-merge for bookmarks
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
742
diff
changeset
|
104 public UpdateBookmarkCommand updateBookmark() { |
63babe8e01a1
support auto-merge for bookmarks
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
742
diff
changeset
|
105 return new UpdateBookmarkCommand(myCommandSettingsFactory.create(), myHgPath, myWorkingDir, myAuthSettings); |
63babe8e01a1
support auto-merge for bookmarks
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
742
diff
changeset
|
106 } |
63babe8e01a1
support auto-merge for bookmarks
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
742
diff
changeset
|
107 |
649
0b50d7952a7d
TW-23468 support tags as branches
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
645
diff
changeset
|
108 public TagsCommand tags() { |
0b50d7952a7d
TW-23468 support tags as branches
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
645
diff
changeset
|
109 return new TagsCommand(myCommandSettingsFactory.create(), myHgPath, myWorkingDir, myAuthSettings); |
0b50d7952a7d
TW-23468 support tags as branches
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
645
diff
changeset
|
110 } |
0b50d7952a7d
TW-23468 support tags as branches
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
645
diff
changeset
|
111 |
0b50d7952a7d
TW-23468 support tags as branches
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
645
diff
changeset
|
112 public Map<String, String> getBranchRevisions(boolean includeBookmarks, boolean includeTags) throws VcsException { |
645
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
631
diff
changeset
|
113 Map<String, String> revisions = new HashMap<String, String>(); |
649
0b50d7952a7d
TW-23468 support tags as branches
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
645
diff
changeset
|
114 if (includeTags) |
0b50d7952a7d
TW-23468 support tags as branches
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
645
diff
changeset
|
115 revisions.putAll(tags().call()); |
645
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
631
diff
changeset
|
116 if (includeBookmarks && version().call().isEqualsOrGreaterThan(BookmarksCommand.REQUIRED_HG_VERSION)) |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
631
diff
changeset
|
117 revisions.putAll(bookmarks().call()); |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
631
diff
changeset
|
118 revisions.putAll(branches().call()); |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
631
diff
changeset
|
119 return revisions; |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
631
diff
changeset
|
120 } |
4cf1ab3cd162
Merge in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
631
diff
changeset
|
121 |
399
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
122 public StatusCommand status() { |
480
efba721f9a1d
TW-23382 agent logs with info, server logs with debug
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
478
diff
changeset
|
123 return new StatusCommand(myCommandSettingsFactory.create(), myHgPath, myWorkingDir, myAuthSettings); |
399
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
124 } |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
125 |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
126 public TagCommand tag() { |
480
efba721f9a1d
TW-23382 agent logs with info, server logs with debug
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
478
diff
changeset
|
127 return new TagCommand(myCommandSettingsFactory.create(), myHgPath, myWorkingDir, myAuthSettings); |
399
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
128 } |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
129 |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
130 public CatCommand cat() { |
480
efba721f9a1d
TW-23382 agent logs with info, server logs with debug
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
478
diff
changeset
|
131 return new CatCommand(myCommandSettingsFactory.create(), myHgPath, myWorkingDir, myAuthSettings); |
399
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
132 } |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
133 |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
134 public ArchiveCommand archive() { |
480
efba721f9a1d
TW-23382 agent logs with info, server logs with debug
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
478
diff
changeset
|
135 return new ArchiveCommand(myCommandSettingsFactory.create(), myHgPath, myWorkingDir, myAuthSettings); |
399
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
136 } |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
137 |
432
4a76645fe087
TW-21516 hg version detection should not depend on locale settings
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
399
diff
changeset
|
138 public VersionCommand version() { |
480
efba721f9a1d
TW-23382 agent logs with info, server logs with debug
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
478
diff
changeset
|
139 return new VersionCommand(myCommandSettingsFactory.create(), myHgPath, myWorkingDir); |
432
4a76645fe087
TW-21516 hg version detection should not depend on locale settings
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
399
diff
changeset
|
140 } |
4a76645fe087
TW-21516 hg version detection should not depend on locale settings
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
399
diff
changeset
|
141 |
511
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
142 public ParentsCommand parents() { |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
143 return new ParentsCommand(myCommandSettingsFactory.create(), myHgPath, myWorkingDir); |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
144 } |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
145 |
631
d28d52336ce5
Implement MergeSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
600
diff
changeset
|
146 public MergeCommand merge() { |
d28d52336ce5
Implement MergeSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
600
diff
changeset
|
147 return new MergeCommand(myCommandSettingsFactory.create(), myHgPath, myWorkingDir); |
d28d52336ce5
Implement MergeSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
600
diff
changeset
|
148 } |
d28d52336ce5
Implement MergeSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
600
diff
changeset
|
149 |
d28d52336ce5
Implement MergeSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
600
diff
changeset
|
150 public ResolveCommand resolve() { |
d28d52336ce5
Implement MergeSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
600
diff
changeset
|
151 return new ResolveCommand(myCommandSettingsFactory.create(), myHgPath, myWorkingDir); |
d28d52336ce5
Implement MergeSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
600
diff
changeset
|
152 } |
d28d52336ce5
Implement MergeSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
600
diff
changeset
|
153 |
d28d52336ce5
Implement MergeSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
600
diff
changeset
|
154 public CommitCommand commit() { |
d28d52336ce5
Implement MergeSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
600
diff
changeset
|
155 return new CommitCommand(myCommandSettingsFactory.create(), myHgPath, myWorkingDir); |
d28d52336ce5
Implement MergeSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
600
diff
changeset
|
156 } |
d28d52336ce5
Implement MergeSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
600
diff
changeset
|
157 |
867
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
854
diff
changeset
|
158 public AddRemoveCommand addRemove() { |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
854
diff
changeset
|
159 return new AddRemoveCommand(myCommandSettingsFactory.create(), myHgPath, myWorkingDir); |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
854
diff
changeset
|
160 } |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
854
diff
changeset
|
161 |
913
ed4ae4bfd691
TW-39482 recover from abandoned transaction error in local mirror
Dmitry Neverov <dmitry.neverov@gmail.com>
parents:
911
diff
changeset
|
162 public RecoverCommand recover() { |
ed4ae4bfd691
TW-39482 recover from abandoned transaction error in local mirror
Dmitry Neverov <dmitry.neverov@gmail.com>
parents:
911
diff
changeset
|
163 return new RecoverCommand(myCommandSettingsFactory.create(), myHgPath, myWorkingDir); |
ed4ae4bfd691
TW-39482 recover from abandoned transaction error in local mirror
Dmitry Neverov <dmitry.neverov@gmail.com>
parents:
911
diff
changeset
|
164 } |
ed4ae4bfd691
TW-39482 recover from abandoned transaction error in local mirror
Dmitry Neverov <dmitry.neverov@gmail.com>
parents:
911
diff
changeset
|
165 |
399
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
166 public String path() { |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
167 return myWorkingDir.getAbsolutePath(); |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
168 } |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
169 |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
170 public File getWorkingDir() { |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
171 return myWorkingDir; |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
172 } |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
173 |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
174 public boolean isEmpty() { |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
175 return isEmptyDir(myWorkingDir); |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
176 } |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
177 |
867
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
854
diff
changeset
|
178 public boolean isBookmark(@NotNull String branch) throws VcsException { |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
854
diff
changeset
|
179 if (branches().call().keySet().contains(branch)) |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
854
diff
changeset
|
180 return false; |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
854
diff
changeset
|
181 return bookmarks().call().keySet().contains(branch); |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
854
diff
changeset
|
182 } |
80d695d15cc0
Add CommitSupport
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
854
diff
changeset
|
183 |
529
33a6be414903
TW-17489 support bookmarks
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
521
diff
changeset
|
184 public void resetBookmarks() { |
33a6be414903
TW-17489 support bookmarks
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
521
diff
changeset
|
185 File dotHg = new File(getWorkingDir(), ".hg"); |
33a6be414903
TW-17489 support bookmarks
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
521
diff
changeset
|
186 FileUtil.delete(new File(dotHg, "bookmarks")); |
33a6be414903
TW-17489 support bookmarks
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
521
diff
changeset
|
187 FileUtil.delete(new File(dotHg, "bookmarks.current")); |
33a6be414903
TW-17489 support bookmarks
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
521
diff
changeset
|
188 } |
33a6be414903
TW-17489 support bookmarks
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
521
diff
changeset
|
189 |
834
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
817
diff
changeset
|
190 public PurgeCommand purge() { |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
817
diff
changeset
|
191 return new PurgeCommand(myCommandSettingsFactory.create(), myHgPath, myWorkingDir); |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
817
diff
changeset
|
192 } |
80ae3dc66685
TW-18605 add support for 'hg purge'
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
817
diff
changeset
|
193 |
854
3a418ac5ada1
Ability to run any hg command
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
838
diff
changeset
|
194 @NotNull |
3a418ac5ada1
Ability to run any hg command
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
838
diff
changeset
|
195 public CommandResult runCommand(@NotNull String command, @NotNull String... args) throws VcsException { |
3a418ac5ada1
Ability to run any hg command
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
838
diff
changeset
|
196 return new FreeStyleCommand(myCommandSettingsFactory.create(), myHgPath, myWorkingDir, command, args).call(); |
3a418ac5ada1
Ability to run any hg command
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
838
diff
changeset
|
197 } |
3a418ac5ada1
Ability to run any hg command
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
838
diff
changeset
|
198 |
548
6c8911ed66f2
Report subrepo changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
529
diff
changeset
|
199 public String getHgPath() { |
6c8911ed66f2
Report subrepo changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
529
diff
changeset
|
200 return myHgPath; |
6c8911ed66f2
Report subrepo changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
529
diff
changeset
|
201 } |
6c8911ed66f2
Report subrepo changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
529
diff
changeset
|
202 |
425
e33c3e4918f5
Add list files support
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
399
diff
changeset
|
203 @NotNull |
472
6d4ce78234c5
TW-23435 list files should take VCS root branch into account
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
433
diff
changeset
|
204 public List<String> listFiles(@NotNull String revision) throws VcsException { |
425
e33c3e4918f5
Add list files support
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
399
diff
changeset
|
205 List<FileStatus> fileStatuses = status() |
472
6d4ce78234c5
TW-23435 list files should take VCS root branch into account
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
433
diff
changeset
|
206 .fromRevision(revision) |
6d4ce78234c5
TW-23435 list files should take VCS root branch into account
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
433
diff
changeset
|
207 .toRevision(revision) |
425
e33c3e4918f5
Add list files support
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
399
diff
changeset
|
208 .hideStatus() |
e33c3e4918f5
Add list files support
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
399
diff
changeset
|
209 .showAllFiles() |
e33c3e4918f5
Add list files support
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
399
diff
changeset
|
210 .call(); |
e33c3e4918f5
Add list files support
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
399
diff
changeset
|
211 List<String> files = new ArrayList<String>(fileStatuses.size()); |
e33c3e4918f5
Add list files support
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
399
diff
changeset
|
212 for (FileStatus fileStatus : fileStatuses) |
e33c3e4918f5
Add list files support
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
399
diff
changeset
|
213 files.add(fileStatus.getPath()); |
e33c3e4918f5
Add list files support
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
399
diff
changeset
|
214 return files; |
e33c3e4918f5
Add list files support
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
399
diff
changeset
|
215 } |
e33c3e4918f5
Add list files support
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
399
diff
changeset
|
216 |
838
7e461ea697f1
Faster working dir revision calculation
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
834
diff
changeset
|
217 @NotNull |
399
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
218 public String getWorkingDirRevision() throws VcsException { |
838
7e461ea697f1
Faster working dir revision calculation
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
834
diff
changeset
|
219 List<String> workingDirParents = parents().call(); |
7e461ea697f1
Faster working dir revision calculation
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
834
diff
changeset
|
220 if (workingDirParents.isEmpty()) |
7e461ea697f1
Faster working dir revision calculation
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
834
diff
changeset
|
221 return LogCommand.ZERO_PARENT_SHORT_ID;//'hg id' shows zeroid when a working dir has no parents |
7e461ea697f1
Faster working dir revision calculation
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
834
diff
changeset
|
222 //if a working dir is in an uncommitted merge state, choose the first parent |
7e461ea697f1
Faster working dir revision calculation
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
834
diff
changeset
|
223 return workingDirParents.get(0); |
399
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
224 } |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
225 |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
226 public boolean containsRevision(@NotNull String revision) { |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
227 return containsRevision(new ChangeSet(revision)); |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
228 } |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
229 |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
230 public boolean containsRevision(@NotNull ChangeSet cset) { |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
231 try { |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
232 id().revision(cset).inLocalRepository().call(); |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
233 return true; |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
234 } catch (VcsException e) { |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
235 return false; |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
236 } |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
237 } |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
238 |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
239 public boolean isValidRepository() { |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
240 // need better way to check that repository copy is ok |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
241 return myWorkingDir.isDirectory() && new File(myWorkingDir, ".hg").isDirectory(); |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
242 } |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
243 |
520
1ca68585ffce
Support mirrors for subrepos with relative paths
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
244 public void setDefaultPath(@NotNull String defaultPath) throws VcsException { |
968
2a8670c6afa9
Prohibit newlines in repository url
Dmitry Neverov <dmitry.neverov@gmail.com>
parents:
913
diff
changeset
|
245 if (defaultPath.contains("\n") || defaultPath.contains("\r")) |
2a8670c6afa9
Prohibit newlines in repository url
Dmitry Neverov <dmitry.neverov@gmail.com>
parents:
913
diff
changeset
|
246 throw new VcsException("Newline in repository url '" + defaultPath + "'"); |
520
1ca68585ffce
Support mirrors for subrepos with relative paths
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
247 try { |
1ca68585ffce
Support mirrors for subrepos with relative paths
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
248 File hgrc = new File(new File(myWorkingDir, ".hg"), "hgrc"); |
870
6df89e185a3c
TW-19916 ability to specify custom mercurial config for VCS root
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
867
diff
changeset
|
249 String content = "%include " + Constants.TEAMCITY_HG_CONFIG_FILE_NAME + "\n\n[paths]\ndefault = " + defaultPath; |
520
1ca68585ffce
Support mirrors for subrepos with relative paths
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
250 FileUtil.writeFileAndReportErrors(hgrc, content); |
1ca68585ffce
Support mirrors for subrepos with relative paths
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
251 } catch (IOException e) { |
1ca68585ffce
Support mirrors for subrepos with relative paths
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
252 throw new VcsException(e); |
1ca68585ffce
Support mirrors for subrepos with relative paths
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
253 } |
399
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
254 } |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
255 |
870
6df89e185a3c
TW-19916 ability to specify custom mercurial config for VCS root
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
867
diff
changeset
|
256 public void setTeamCityConfig(@NotNull String configContent) throws VcsException { |
6df89e185a3c
TW-19916 ability to specify custom mercurial config for VCS root
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
867
diff
changeset
|
257 try { |
6df89e185a3c
TW-19916 ability to specify custom mercurial config for VCS root
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
867
diff
changeset
|
258 File teamcityConfig = new File(new File(myWorkingDir, ".hg"), Constants.TEAMCITY_HG_CONFIG_FILE_NAME); |
6df89e185a3c
TW-19916 ability to specify custom mercurial config for VCS root
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
867
diff
changeset
|
259 FileUtil.writeFileAndReportErrors(teamcityConfig, configContent); |
6df89e185a3c
TW-19916 ability to specify custom mercurial config for VCS root
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
867
diff
changeset
|
260 } catch (IOException e) { |
6df89e185a3c
TW-19916 ability to specify custom mercurial config for VCS root
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
867
diff
changeset
|
261 throw new VcsException(e); |
6df89e185a3c
TW-19916 ability to specify custom mercurial config for VCS root
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
867
diff
changeset
|
262 } |
6df89e185a3c
TW-19916 ability to specify custom mercurial config for VCS root
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
867
diff
changeset
|
263 } |
6df89e185a3c
TW-19916 ability to specify custom mercurial config for VCS root
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
867
diff
changeset
|
264 |
399
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
265 public boolean hasSubreposAtRevision(@NotNull String revision) { |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
266 return !getSubrepositories(new ChangeSet(revision)).isEmpty(); |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
267 } |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
268 |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
269 public boolean hasSubreposAtRevision(@NotNull ChangeSet cset) { |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
270 return !getSubrepositories(cset).isEmpty(); |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
271 } |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
272 |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
273 public Map<String, SubRepo> getSubrepositories(@NotNull String revision) { |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
274 return getSubrepositories(new ChangeSet(revision)); |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
275 } |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
276 |
548
6c8911ed66f2
Report subrepo changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
529
diff
changeset
|
277 public List<HgSubrepoConfigChange> getSubrepoConfigChanges(@NotNull String revision) throws VcsException { |
511
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
278 if (containsSubrepoConfigChange(revision)) { |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
279 List<String> parents = parents().ofRevision(revision).call(); |
548
6c8911ed66f2
Report subrepo changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
529
diff
changeset
|
280 return getSubrepoConfigChanges(revision, parents); |
511
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
281 } |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
282 return emptyList(); |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
283 } |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
284 |
548
6c8911ed66f2
Report subrepo changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
529
diff
changeset
|
285 public List<HgSubrepoConfigChange> getSubrepoConfigChanges(@NotNull ChangeSet cset) { |
6c8911ed66f2
Report subrepo changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
529
diff
changeset
|
286 if (containsSubrepoConfigChange(cset)) { |
6c8911ed66f2
Report subrepo changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
529
diff
changeset
|
287 List<String> parents = new ArrayList<String>(); |
6c8911ed66f2
Report subrepo changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
529
diff
changeset
|
288 for (ChangeSetRevision p : cset.getParents()) { |
6c8911ed66f2
Report subrepo changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
529
diff
changeset
|
289 parents.add(p.getId()); |
6c8911ed66f2
Report subrepo changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
529
diff
changeset
|
290 } |
6c8911ed66f2
Report subrepo changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
529
diff
changeset
|
291 return getSubrepoConfigChanges(cset.getId(), parents); |
6c8911ed66f2
Report subrepo changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
529
diff
changeset
|
292 } |
511
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
293 return emptyList(); |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
294 } |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
295 |
587
e77ef6cd4ddb
Incremental patch for VCS root with subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
585
diff
changeset
|
296 public List<HgSubrepoConfigChange> getSubrepoConfigChanges(@NotNull String fromRevision, @NotNull String toRevision) { |
e77ef6cd4ddb
Incremental patch for VCS root with subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
585
diff
changeset
|
297 return getSubrepoConfigChanges(toRevision, asList(fromRevision)); |
e77ef6cd4ddb
Incremental patch for VCS root with subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
585
diff
changeset
|
298 } |
e77ef6cd4ddb
Incremental patch for VCS root with subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
585
diff
changeset
|
299 |
585
d1203382ce76
Collect subrepo changes from first parent commit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
566
diff
changeset
|
300 public List<HgSubrepoConfigChange> getSubrepoConfigChanges(@NotNull String revision, @NotNull List<String> parentRevisions) { |
511
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
301 Map<String, SubRepo> curSubrepos = getSubrepositories(revision); |
548
6c8911ed66f2
Report subrepo changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
529
diff
changeset
|
302 List<Map<String, SubRepo>> prevSubrepos = new ArrayList<Map<String, SubRepo>>(); |
6c8911ed66f2
Report subrepo changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
529
diff
changeset
|
303 for (String parentRevision : parentRevisions) { |
6c8911ed66f2
Report subrepo changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
529
diff
changeset
|
304 prevSubrepos.add(getSubrepositories(parentRevision)); |
6c8911ed66f2
Report subrepo changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
529
diff
changeset
|
305 } |
697
d1469a7cc038
Skip collecting changes in subrepos which url cannot be resolved
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
649
diff
changeset
|
306 return getSubrepoConfigChanges(revision, prevSubrepos, curSubrepos); |
511
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
307 |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
308 } |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
309 |
697
d1469a7cc038
Skip collecting changes in subrepos which url cannot be resolved
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
649
diff
changeset
|
310 private List<HgSubrepoConfigChange> getSubrepoConfigChanges(@NotNull String mainRepoRevision, |
d1469a7cc038
Skip collecting changes in subrepos which url cannot be resolved
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
649
diff
changeset
|
311 @NotNull List<Map<String, SubRepo>> prevSubrepos, |
548
6c8911ed66f2
Report subrepo changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
529
diff
changeset
|
312 @NotNull Map<String, SubRepo> curSubrepos) { |
6c8911ed66f2
Report subrepo changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
529
diff
changeset
|
313 List<HgSubrepoConfigChange> configChanges = new ArrayList<HgSubrepoConfigChange>(); |
511
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
314 for (Map.Entry<String, SubRepo> e : curSubrepos.entrySet()) { |
554
110de749f460
Collect subrepo changes only if subrepo revision changed
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
548
diff
changeset
|
315 String path = e.getKey(); |
511
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
316 SubRepo curSubrepo = e.getValue(); |
548
6c8911ed66f2
Report subrepo changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
529
diff
changeset
|
317 List<SubRepo> prevs = new ArrayList<SubRepo>(); |
6c8911ed66f2
Report subrepo changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
529
diff
changeset
|
318 for (Map<String, SubRepo> prev : prevSubrepos) { |
554
110de749f460
Collect subrepo changes only if subrepo revision changed
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
548
diff
changeset
|
319 SubRepo prevSubrepo = prev.remove(path); |
110de749f460
Collect subrepo changes only if subrepo revision changed
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
548
diff
changeset
|
320 if (prevSubrepo == null) //no subrepo at this path in previous revision |
110de749f460
Collect subrepo changes only if subrepo revision changed
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
548
diff
changeset
|
321 continue; |
110de749f460
Collect subrepo changes only if subrepo revision changed
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
548
diff
changeset
|
322 if (prevSubrepo.equals(curSubrepo)) //subrepo configuration doesn't change since previous revision |
110de749f460
Collect subrepo changes only if subrepo revision changed
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
548
diff
changeset
|
323 continue; |
110de749f460
Collect subrepo changes only if subrepo revision changed
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
548
diff
changeset
|
324 prevs.add(prevSubrepo); |
511
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
325 } |
697
d1469a7cc038
Skip collecting changes in subrepos which url cannot be resolved
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
649
diff
changeset
|
326 configChanges.add(new HgSubrepoConfigChange(mainRepoRevision, e.getKey(), prevs, curSubrepo)); |
511
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
327 } |
548
6c8911ed66f2
Report subrepo changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
529
diff
changeset
|
328 for (Map<String, SubRepo> prev : prevSubrepos) { |
6c8911ed66f2
Report subrepo changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
529
diff
changeset
|
329 for (Map.Entry<String, SubRepo> e : prev.entrySet()) { |
697
d1469a7cc038
Skip collecting changes in subrepos which url cannot be resolved
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
649
diff
changeset
|
330 configChanges.add(new HgSubrepoConfigChange(mainRepoRevision, e.getKey(), e.getValue(), null)); |
548
6c8911ed66f2
Report subrepo changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
529
diff
changeset
|
331 } |
511
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
332 } |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
333 return configChanges; |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
334 } |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
335 |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
336 private boolean containsSubrepoConfigChange(@NotNull ChangeSet cset) { |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
337 for (FileStatus f : cset.getModifiedFiles()) { |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
338 if (containsSubrepoConfigChange(f)) |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
339 return true; |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
340 } |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
341 return false; |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
342 } |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
343 |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
344 private boolean containsSubrepoConfigChange(@NotNull String revision) throws VcsException { |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
345 List<FileStatus> changedFiles = status() |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
346 .fromRevision(revision) |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
347 .toRevision(revision) |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
348 .showAllFiles() |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
349 .call(); |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
350 for (FileStatus f : changedFiles) { |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
351 if (containsSubrepoConfigChange(f)) |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
352 return true; |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
353 } |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
354 return false; |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
355 } |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
356 |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
357 private boolean containsSubrepoConfigChange(@NotNull FileStatus f) { |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
358 return f.getPath().equals(".hgsubstate"); |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
359 } |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
360 |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
361 //path->subrepo |
817
25482087e9b5
use only execute to call the cat command
eugene.petrenko@jetbrains.com
parents:
749
diff
changeset
|
362 @NotNull |
25482087e9b5
use only execute to call the cat command
eugene.petrenko@jetbrains.com
parents:
749
diff
changeset
|
363 public Map<String, SubRepo> getSubrepositories(@NotNull final ChangeSet cset) { |
25482087e9b5
use only execute to call the cat command
eugene.petrenko@jetbrains.com
parents:
749
diff
changeset
|
364 final String revId = cset.getId(); |
25482087e9b5
use only execute to call the cat command
eugene.petrenko@jetbrains.com
parents:
749
diff
changeset
|
365 |
399
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
366 Map<String, SubRepo> subrepos = mySubreposCache.get(revId); |
817
25482087e9b5
use only execute to call the cat command
eugene.petrenko@jetbrains.com
parents:
749
diff
changeset
|
367 if (subrepos != null) { |
511
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
368 return new HashMap<String, SubRepo>(subrepos); |
817
25482087e9b5
use only execute to call the cat command
eugene.petrenko@jetbrains.com
parents:
749
diff
changeset
|
369 } |
25482087e9b5
use only execute to call the cat command
eugene.petrenko@jetbrains.com
parents:
749
diff
changeset
|
370 |
399
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
371 File catDir = null; |
817
25482087e9b5
use only execute to call the cat command
eugene.petrenko@jetbrains.com
parents:
749
diff
changeset
|
372 final CatCommand cc = cat().setRevId(revId).files(asList(".hgsub", ".hgsubstate")).checkForFailure(false); |
399
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
373 try { |
817
25482087e9b5
use only execute to call the cat command
eugene.petrenko@jetbrains.com
parents:
749
diff
changeset
|
374 catDir = cc.call(); |
723 | 375 subrepos = HgSubs.readSubrepositories(new File(catDir, ".hgsub"), new File(catDir, ".hgsubstate")); |
399
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
376 mySubreposCache.put(revId, subrepos); |
511
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
377 return new HashMap<String, SubRepo>(subrepos); |
399
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
378 } catch (VcsException e) { |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
379 return emptyMap(); |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
380 } finally { |
478
0a33f3dbd261
Ensure temp dirs are deleted
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
472
diff
changeset
|
381 deleteDir(catDir, Loggers.VCS); |
399
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
382 } |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
383 } |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
384 |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
385 @Override |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
386 public String toString() { |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
387 return myWorkingDir.getAbsolutePath(); |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
388 } |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
389 |
725 | 390 @NotNull |
391 public static String shortId(@NotNull final String s) { | |
392 if (s.length() > 12) | |
393 return s.substring(0, 12); | |
394 return s; | |
399
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
395 } |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
396 } |