Mercurial > hg > mercurial
changeset 474:6b447cd40492 Faradi-7.1.x
TW-10076 allow to ignore commits where all files excluded by checkout rules
Since 7.1 hg-plugin marks empty commits as cannot be ignored. We do that
in order to show empty commits which close the branch. Since hg log doesn't
contain any signs that commit closes branch, hg-plugin detects it by checking
if commit has no changed files. We did that after applying checkout rules, as a
result some commits with all files excluded were marked as cannot be ignored
which is wrong. Now hg-plugin checks if commit is empty before applying
checkout rules.
author | Dmitry Neverov <dmitry.neverov@jetbrains.com> |
---|---|
date | Mon, 10 Sep 2012 20:02:07 +0400 |
parents | 6d4ce78234c5 |
children | 797fadbf2a9b aa19481a91c3 |
files | mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupport.java mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupportTest.java mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/UnrelatedResitoriesTest.java mercurial-tests/testData/README mercurial-tests/testData/rep2/hg/dirstate mercurial-tests/testData/rep2/hg/store/00changelog.i mercurial-tests/testData/rep2/hg/store/00manifest.i mercurial-tests/testData/rep2/hg/store/data/.hgtags.i mercurial-tests/testData/rep2/hg/store/fncache mercurial-tests/testData/rep2/hg/store/undo mercurial-tests/testData/rep2/hg/undo.dirstate |
diffstat | 11 files changed, 37 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupport.java Fri Sep 07 16:50:49 2012 +0400 +++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupport.java Mon Sep 10 20:02:07 2012 +0400 @@ -614,16 +614,16 @@ for (ChangeSetRevision parent : parents) { result.addParentRevision(parent.getId()); } - setCanBeIgnored(result); + setCanBeIgnored(result, cset); return result; } - private void setCanBeIgnored(@NotNull ModificationData md) { + private void setCanBeIgnored(@NotNull ModificationData md, @NotNull ChangeSet cset) { if (md.getParentRevisions().size() > 1) { //don't ignore merge commits md.setCanBeIgnored(false); - } else if (md.getChangeCount() == 0) { + } else if (cset.getModifiedFiles().isEmpty()) { //don't ignore empty commits md.setCanBeIgnored(false); }
--- a/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupportTest.java Fri Sep 07 16:50:49 2012 +0400 +++ b/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupportTest.java Mon Sep 10 20:02:07 2012 +0400 @@ -17,6 +17,7 @@ import com.intellij.execution.configurations.GeneralCommandLine; import jetbrains.buildServer.buildTriggers.vcs.mercurial.command.*; +import jetbrains.buildServer.util.TestFor; import jetbrains.buildServer.vcs.*; import jetbrains.buildServer.vcs.impl.VcsRootImpl; import junit.framework.Assert; @@ -279,6 +280,25 @@ } + @TestFor(issues = "TW-10076") + public void should_allow_to_ignore_changes_where_all_files_excluded() throws Exception { + VcsRootImpl root = createVcsRoot(myRep2Path); + List<ModificationData> changes = myVcs.collectChanges(root, "43023ea3f13b", "a2672ee13212", new CheckoutRules("-:.hgtags")); + assertEquals(changes.size(), 1); + assertTrue(changes.get(0).isCanBeIgnored()); + } + + + @TestFor(issues = "TW-10076") + public void should_not_allow_to_ignore_close_branch_commits() throws Exception { + VcsRootImpl root = createVcsRoot(myRep2Path); + List<ModificationData> changes = myVcs.collectChanges(root, "df04faa7575a", "43023ea3f13b", CheckoutRules.DEFAULT); + assertEquals(changes.size(), 2); + assertEquals(changes.get(1).getChangeCount(), 0); + assertFalse(changes.get(1).isCanBeIgnored()); + } + + public void test_tag_with_specified_username() throws IOException, VcsException { final String customUserForTag = "John Doe <john@some.org>"; File repository = copyRepository(myTempFiles, simpleRepo());
--- a/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/UnrelatedResitoriesTest.java Fri Sep 07 16:50:49 2012 +0400 +++ b/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/UnrelatedResitoriesTest.java Mon Sep 10 20:02:07 2012 +0400 @@ -25,7 +25,7 @@ @Test public class UnrelatedResitoriesTest { - private final static String CURRENT_VERSION_OF_NEW_REPO = "df04faa7575a"; + private final static String CURRENT_VERSION_OF_NEW_REPO = "a2672ee13212"; private MercurialVcsSupport myVcs; private TempFiles myTempFiles; private File myRepositoryLocation;
--- a/mercurial-tests/testData/README Fri Sep 07 16:50:49 2012 +0400 +++ b/mercurial-tests/testData/README Mon Sep 10 20:02:07 2012 +0400 @@ -24,8 +24,14 @@ rep2 history: -@ 18:df04faa7575a merge personal-branch tip +o 21:a2672ee13212 Tag for test //add tag t1 on 43023ea3f13b +| +o 20:43023ea3f13b Merge closed personal-branch |\ +| o 19:ca64c523f54c Close personal-branch +| | +@ | 18:df04faa7575a merge personal-branch tip +|\| | o 17:9ec402c74298 another change to file.txt in personal-branch (personal-branch) | | o | 16:505c5b9d01e6 change file.txt back
--- a/mercurial-tests/testData/rep2/hg/store/fncache Fri Sep 07 16:50:49 2012 +0400 +++ b/mercurial-tests/testData/rep2/hg/store/fncache Mon Sep 10 20:02:07 2012 +0400 @@ -1,10 +1,11 @@ -data/file.txt.i +data/dir4/file4.txt.i data/dir3/file3.txt.i data/dir1/file1.txt.i -data/dir2/file2.txt.i -data/dir4/file4.txt.i -data/dir4/file41.txt.i +data/file.txt.i +data/.hgtags.i data/dir4/file42.txt.i +data/dir5/file5.txt.i +data/dir2/file2.txt.i data/dir4/file43.txt.i -data/dir5/file5.txt.i +data/dir4/file41.txt.i data/dir6/file6.txt.i