changeset 261:b855b472e985

TW-17530
author Dmitry Neverov <dmitry.neverov@jetbrains.com>
date Mon, 04 Jul 2011 13:42:30 +0400
parents b00f7c7d53e1 (current diff) 62f9389a4095 (diff)
children d6c9dd7e0fee
files
diffstat 2 files changed, 24 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupport.java	Fri Jun 17 12:15:41 2011 +0400
+++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupport.java	Mon Jul 04 13:42:30 2011 +0400
@@ -113,17 +113,27 @@
   private List<VcsChange> toVcsChanges(final List<ModifiedFile> modifiedFiles, String prevVer, String curVer, CheckoutRules rules) {
     List<VcsChange> files = new ArrayList<VcsChange>();
     for (ModifiedFile mf: modifiedFiles) {
-      String normalizedPath = PathUtil.normalizeSeparator(mf.getPath());
-      VcsChangeInfo.Type changeType = getChangeType(mf.getStatus());
-      if (changeType == null) {
-        Loggers.VCS.warn("Unable to convert status: " + mf.getStatus() + " to VCS change type");
-        changeType = VcsChangeInfo.Type.NOT_CHANGED;
-      }
-      files.add(new VcsChange(changeType, mf.getStatus().getName(), normalizedPath, rules.map(mf.getPath()), prevVer, curVer));
+      final String path = rules.map(mf.getPath());
+      if (shouldInclude(path))
+        files.add(toVcsChange(mf, prevVer, curVer, path));
     }
     return files;
   }
 
+  private boolean shouldInclude(String path) {
+    return path != null;
+  }
+
+  private VcsChange toVcsChange(ModifiedFile mf, String prevVer, String curVer, String mappedPath) {
+    String normalizedPath = PathUtil.normalizeSeparator(mf.getPath());
+    VcsChangeInfo.Type changeType = getChangeType(mf.getStatus());
+    if (changeType == null) {
+      Loggers.VCS.warn("Unable to convert status: " + mf.getStatus() + " to VCS change type");
+      changeType = VcsChangeInfo.Type.NOT_CHANGED;
+    }
+    return new VcsChange(changeType, mf.getStatus().getName(), normalizedPath, mappedPath, prevVer, curVer);
+  }
+
   private VcsChangeInfo.Type getChangeType(final ModifiedFile.Status status) {
     switch (status) {
       case ADDED:return VcsChangeInfo.Type.ADDED;
--- a/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupportTest.java	Fri Jun 17 12:15:41 2011 +0400
+++ b/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupportTest.java	Mon Jul 04 13:42:30 2011 +0400
@@ -401,6 +401,13 @@
     assertFiles(Arrays.asList("M dir6/file6.txt", "A dir5/file5.txt"), changes.get(1));
   }
 
+  //TW-17530
+  public void test_collect_changes_with_exclude_checkout_rules() throws Exception {
+    VcsRootImpl root = createVcsRoot(simpleRepo());
+    collectChanges(root, "0:9875b412a788", "10:9c6a6b4aede0", new CheckoutRules("-:dir1\n" +
+            "-:dir with space"));
+  }
+
   //TW-10172
   public void should_not_fill_server_clone_path() {
     assertFalse(myVcs.getDefaultVcsProperties().containsKey(Constants.SERVER_CLONE_PATH_PROP));