changeset 944:ed49cbc93aa3 Hajipur-9.1.x

TW-44122 allow all commits to be excluded by checkout rules Marking commit as 'cannot be ignored' makes TeamCity to show it even if it was excluded by checkout rules. As a result build configuration change log is full of commits with 0 changed files.
author Dmitry Neverov <dmitry.neverov@gmail.com>
date Tue, 02 Feb 2016 18:52:25 +0100
parents 448ef0521954
children 2f876a09cb99 31ac1d822fd7
files mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ModificationDataFactory.java mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupportTest.java
diffstat 2 files changed, 27 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ModificationDataFactory.java	Wed Sep 16 19:55:47 2015 +0200
+++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ModificationDataFactory.java	Tue Feb 02 18:52:25 2016 +0100
@@ -21,6 +21,7 @@
 import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.FileStatus;
 import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.Status;
 import jetbrains.buildServer.log.Loggers;
+import jetbrains.buildServer.serverSide.TeamCityProperties;
 import jetbrains.buildServer.vcs.*;
 import org.jetbrains.annotations.NotNull;
 
@@ -57,11 +58,13 @@
   private static void setCanBeIgnored(@NotNull final ModificationData md,
                                       @NotNull final ChangeSet cset) {
     if (md.getParentRevisions().size() > 1) {
-      //don't ignore merge commits
-      md.setCanBeIgnored(false);
+      boolean canIgnoreMerges = TeamCityProperties.getBooleanOrTrue("teamcity.hg.allowIgnoringMergeCommits");
+      if (!canIgnoreMerges)
+        md.setCanBeIgnored(false);
     } else if (cset.getModifiedFiles().isEmpty()) {
-      //don't ignore empty commits
-      md.setCanBeIgnored(false);
+      boolean canIgnoreEmptyCommits = TeamCityProperties.getBooleanOrTrue("teamcity.hg.allowIgnoringEmptyCommits");
+      if (!canIgnoreEmptyCommits)
+        md.setCanBeIgnored(false);
     }
   }
 
--- a/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupportTest.java	Wed Sep 16 19:55:47 2015 +0200
+++ b/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupportTest.java	Tue Feb 02 18:52:25 2016 +0100
@@ -331,11 +331,28 @@
 
   @TestFor(issues = "TW-10076")
   public void should_not_allow_to_ignore_close_branch_commits() throws Exception {
+    try {
+      System.setProperty("teamcity.hg.allowIgnoringEmptyCommits", "false");
+      VcsRootImpl root = createVcsRoot(myRep2Path);
+      List<ModificationData> changes = myVcs.getCollectChangesPolicy().collectChanges(root, "df04faa7575a", "43023ea3f13b", CheckoutRules.DEFAULT);
+      assertEquals(changes.size(), 2);
+      ModificationData closeBranchCommit = changes.get(0);
+      assertEquals(closeBranchCommit.getVersion(), "ca64c523f54c");
+      assertEquals(closeBranchCommit.getChangeCount(), 0);
+      assertFalse(closeBranchCommit.isCanBeIgnored());
+    } finally {
+      System.getProperties().remove("teamcity.hg.allowIgnoringEmptyCommits");
+    }
+  }
+
+
+  @TestFor(issues = "TW-44122")
+  public void by_default_all_commits_should_be_ignorable() throws Exception {
     VcsRootImpl root = createVcsRoot(myRep2Path);
     List<ModificationData> changes = myVcs.getCollectChangesPolicy().collectChanges(root, "df04faa7575a", "43023ea3f13b", CheckoutRules.DEFAULT);
-    assertEquals(changes.size(), 2);
-    assertEquals(changes.get(1).getChangeCount(), 0);
-    assertFalse(changes.get(1).isCanBeIgnored());
+    for (ModificationData change : changes) {
+      assertTrue(change.isCanBeIgnored());
+    }
   }