# HG changeset patch # User Dmitry Neverov # Date 1404418326 -7200 # Node ID 820d02ac9b8a0ea3405a20162abef42aa5374783 # Parent d746a93515729a7e2fafe0420df3b33753463f7c Map subrepo path when we remove it diff -r d746a9351572 -r 820d02ac9b8a mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupport.java --- a/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupport.java Wed Jul 02 19:21:34 2014 +0200 +++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupport.java Thu Jul 03 22:12:06 2014 +0200 @@ -334,11 +334,11 @@ buildPatch(subrepoRoot, subrepoFromRevision, subrepoToRevision, builder, subrepoRules); } else if (configChange.subrepoRemoved()) { - builder.deleteDirectory(new File(subrepoPath), true); + deleteDirInPatch(builder, mainRootRules, subrepoPath); } else if (configChange.subrepoUrlChanged()) { assert currentSubrepo != null; - builder.deleteDirectory(new File(subrepoPath), true); + deleteDirInPatch(builder, mainRootRules, subrepoPath); String subrepoUrl = currentSubrepo.resolveUrl(mainRoot.getRepository()); HgVcsRoot subrepoRoot = mainRoot.withUrl(subrepoUrl); @@ -362,6 +362,14 @@ } } + private void deleteDirInPatch(@NotNull PatchBuilder builder, @NotNull CheckoutRules rules, @NotNull String unMappedPath) throws IOException { + for (IncludeRule rule : rules.getRootIncludeRules()) { + String mappedPath = rule.map(unMappedPath); + if (mappedPath != null) + builder.deleteDirectory(new File(mappedPath), true); + } + } + // builds patch by exporting files using specified version private void buildFullPatch(@NotNull final HgVcsRoot root, @NotNull final ChangeSet toVer,