diff mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupport.java @ 853:820d02ac9b8a

Map subrepo path when we remove it
author Dmitry Neverov <dmitry.neverov@jetbrains.com>
date Thu, 03 Jul 2014 22:12:06 +0200
parents fcc2a5bf4238
children 24a6ef9166ae
line wrap: on
line diff
--- 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,