Mercurial > hg > mercurial
annotate mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/HgRepo.java @ 913:ed4ae4bfd691 Hajipur-9.0.x
TW-39482 recover from abandoned transaction error in local mirror
author | Dmitry Neverov <dmitry.neverov@gmail.com> |
---|---|
date | Fri, 02 Jan 2015 12:24:21 +0100 |
parents | 15fce0c26e18 |
children | 2a8670c6afa9 38adef4f1b8f |
rev | line source |
---|---|
732
31a1aca3305c
Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
730
diff
changeset
|
1 /* |
31a1aca3305c
Update copyright
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
730
diff
changeset
|
2 * Copyright 2000-2014 JetBrains s.r.o. |
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 { |
1ca68585ffce
Support mirrors for subrepos with relative paths
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
245 try { |
1ca68585ffce
Support mirrors for subrepos with relative paths
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
246 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
|
247 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
|
248 FileUtil.writeFileAndReportErrors(hgrc, content); |
1ca68585ffce
Support mirrors for subrepos with relative paths
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
249 } catch (IOException e) { |
1ca68585ffce
Support mirrors for subrepos with relative paths
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
250 throw new VcsException(e); |
1ca68585ffce
Support mirrors for subrepos with relative paths
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
251 } |
399
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
252 } |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
253 |
870
6df89e185a3c
TW-19916 ability to specify custom mercurial config for VCS root
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
867
diff
changeset
|
254 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
|
255 try { |
6df89e185a3c
TW-19916 ability to specify custom mercurial config for VCS root
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
867
diff
changeset
|
256 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
|
257 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
|
258 } 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
|
259 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
|
260 } |
6df89e185a3c
TW-19916 ability to specify custom mercurial config for VCS root
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
867
diff
changeset
|
261 } |
6df89e185a3c
TW-19916 ability to specify custom mercurial config for VCS root
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
867
diff
changeset
|
262 |
399
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
263 public boolean hasSubreposAtRevision(@NotNull String revision) { |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
264 return !getSubrepositories(new ChangeSet(revision)).isEmpty(); |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
265 } |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
266 |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
267 public boolean hasSubreposAtRevision(@NotNull ChangeSet cset) { |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
268 return !getSubrepositories(cset).isEmpty(); |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
269 } |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
270 |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
271 public Map<String, SubRepo> getSubrepositories(@NotNull String revision) { |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
272 return getSubrepositories(new ChangeSet(revision)); |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
273 } |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
274 |
548
6c8911ed66f2
Report subrepo changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
529
diff
changeset
|
275 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
|
276 if (containsSubrepoConfigChange(revision)) { |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
277 List<String> parents = parents().ofRevision(revision).call(); |
548
6c8911ed66f2
Report subrepo changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
529
diff
changeset
|
278 return getSubrepoConfigChanges(revision, parents); |
511
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
279 } |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
280 return emptyList(); |
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 |
548
6c8911ed66f2
Report subrepo changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
529
diff
changeset
|
283 public List<HgSubrepoConfigChange> getSubrepoConfigChanges(@NotNull ChangeSet cset) { |
6c8911ed66f2
Report subrepo changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
529
diff
changeset
|
284 if (containsSubrepoConfigChange(cset)) { |
6c8911ed66f2
Report subrepo changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
529
diff
changeset
|
285 List<String> parents = new ArrayList<String>(); |
6c8911ed66f2
Report subrepo changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
529
diff
changeset
|
286 for (ChangeSetRevision p : cset.getParents()) { |
6c8911ed66f2
Report subrepo changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
529
diff
changeset
|
287 parents.add(p.getId()); |
6c8911ed66f2
Report subrepo changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
529
diff
changeset
|
288 } |
6c8911ed66f2
Report subrepo changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
529
diff
changeset
|
289 return getSubrepoConfigChanges(cset.getId(), parents); |
6c8911ed66f2
Report subrepo changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
529
diff
changeset
|
290 } |
511
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
291 return emptyList(); |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
292 } |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
293 |
587
e77ef6cd4ddb
Incremental patch for VCS root with subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
585
diff
changeset
|
294 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
|
295 return getSubrepoConfigChanges(toRevision, asList(fromRevision)); |
e77ef6cd4ddb
Incremental patch for VCS root with subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
585
diff
changeset
|
296 } |
e77ef6cd4ddb
Incremental patch for VCS root with subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
585
diff
changeset
|
297 |
585
d1203382ce76
Collect subrepo changes from first parent commit
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
566
diff
changeset
|
298 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
|
299 Map<String, SubRepo> curSubrepos = getSubrepositories(revision); |
548
6c8911ed66f2
Report subrepo changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
529
diff
changeset
|
300 List<Map<String, SubRepo>> prevSubrepos = new ArrayList<Map<String, SubRepo>>(); |
6c8911ed66f2
Report subrepo changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
529
diff
changeset
|
301 for (String parentRevision : parentRevisions) { |
6c8911ed66f2
Report subrepo changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
529
diff
changeset
|
302 prevSubrepos.add(getSubrepositories(parentRevision)); |
6c8911ed66f2
Report subrepo changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
529
diff
changeset
|
303 } |
697
d1469a7cc038
Skip collecting changes in subrepos which url cannot be resolved
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
649
diff
changeset
|
304 return getSubrepoConfigChanges(revision, prevSubrepos, curSubrepos); |
511
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
305 |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
306 } |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
307 |
697
d1469a7cc038
Skip collecting changes in subrepos which url cannot be resolved
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
649
diff
changeset
|
308 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
|
309 @NotNull List<Map<String, SubRepo>> prevSubrepos, |
548
6c8911ed66f2
Report subrepo changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
529
diff
changeset
|
310 @NotNull Map<String, SubRepo> curSubrepos) { |
6c8911ed66f2
Report subrepo changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
529
diff
changeset
|
311 List<HgSubrepoConfigChange> configChanges = new ArrayList<HgSubrepoConfigChange>(); |
511
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
312 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
|
313 String path = e.getKey(); |
511
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
314 SubRepo curSubrepo = e.getValue(); |
548
6c8911ed66f2
Report subrepo changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
529
diff
changeset
|
315 List<SubRepo> prevs = new ArrayList<SubRepo>(); |
6c8911ed66f2
Report subrepo changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
529
diff
changeset
|
316 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
|
317 SubRepo prevSubrepo = prev.remove(path); |
110de749f460
Collect subrepo changes only if subrepo revision changed
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
548
diff
changeset
|
318 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
|
319 continue; |
110de749f460
Collect subrepo changes only if subrepo revision changed
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
548
diff
changeset
|
320 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
|
321 continue; |
110de749f460
Collect subrepo changes only if subrepo revision changed
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
548
diff
changeset
|
322 prevs.add(prevSubrepo); |
511
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
323 } |
697
d1469a7cc038
Skip collecting changes in subrepos which url cannot be resolved
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
649
diff
changeset
|
324 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
|
325 } |
548
6c8911ed66f2
Report subrepo changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
529
diff
changeset
|
326 for (Map<String, SubRepo> prev : prevSubrepos) { |
6c8911ed66f2
Report subrepo changes
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
529
diff
changeset
|
327 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
|
328 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
|
329 } |
511
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
330 } |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
331 return configChanges; |
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 |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
334 private boolean containsSubrepoConfigChange(@NotNull ChangeSet cset) { |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
335 for (FileStatus f : cset.getModifiedFiles()) { |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
336 if (containsSubrepoConfigChange(f)) |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
337 return true; |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
338 } |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
339 return false; |
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 |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
342 private boolean containsSubrepoConfigChange(@NotNull String revision) throws VcsException { |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
343 List<FileStatus> changedFiles = status() |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
344 .fromRevision(revision) |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
345 .toRevision(revision) |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
346 .showAllFiles() |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
347 .call(); |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
348 for (FileStatus f : changedFiles) { |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
349 if (containsSubrepoConfigChange(f)) |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
350 return true; |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
351 } |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
352 return false; |
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 |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
355 private boolean containsSubrepoConfigChange(@NotNull FileStatus f) { |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
356 return f.getPath().equals(".hgsubstate"); |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
357 } |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
358 |
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
359 //path->subrepo |
817
25482087e9b5
use only execute to call the cat command
eugene.petrenko@jetbrains.com
parents:
749
diff
changeset
|
360 @NotNull |
25482087e9b5
use only execute to call the cat command
eugene.petrenko@jetbrains.com
parents:
749
diff
changeset
|
361 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
|
362 final String revId = cset.getId(); |
25482087e9b5
use only execute to call the cat command
eugene.petrenko@jetbrains.com
parents:
749
diff
changeset
|
363 |
399
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
364 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
|
365 if (subrepos != null) { |
511
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
366 return new HashMap<String, SubRepo>(subrepos); |
817
25482087e9b5
use only execute to call the cat command
eugene.petrenko@jetbrains.com
parents:
749
diff
changeset
|
367 } |
25482087e9b5
use only execute to call the cat command
eugene.petrenko@jetbrains.com
parents:
749
diff
changeset
|
368 |
399
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
369 File catDir = null; |
817
25482087e9b5
use only execute to call the cat command
eugene.petrenko@jetbrains.com
parents:
749
diff
changeset
|
370 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
|
371 try { |
817
25482087e9b5
use only execute to call the cat command
eugene.petrenko@jetbrains.com
parents:
749
diff
changeset
|
372 catDir = cc.call(); |
723 | 373 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
|
374 mySubreposCache.put(revId, subrepos); |
511
f2666e817701
Detect changes in subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
480
diff
changeset
|
375 return new HashMap<String, SubRepo>(subrepos); |
399
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
376 } catch (VcsException e) { |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
377 return emptyMap(); |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
378 } finally { |
478
0a33f3dbd261
Ensure temp dirs are deleted
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
472
diff
changeset
|
379 deleteDir(catDir, Loggers.VCS); |
399
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
380 } |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
381 } |
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 @Override |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
384 public String toString() { |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
385 return myWorkingDir.getAbsolutePath(); |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
386 } |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
387 |
725 | 388 @NotNull |
389 public static String shortId(@NotNull final String s) { | |
390 if (s.length() > 12) | |
391 return s.substring(0, 12); | |
392 return s; | |
399
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
393 } |
45f25ca68312
Support local mirrors for subrepos
Dmitry Neverov <dmitry.neverov@jetbrains.com>
parents:
diff
changeset
|
394 } |