Mercurial > hg > mercurial
changeset 271:c0540bbe7c2a
Revert premature commit. Parents are not part of API yet
line wrap: on
line diff
--- a/mercurial-agent/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialAgentSideVcsSupport.java Wed Jul 20 15:10:49 2011 +0400 +++ b/mercurial-agent/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialAgentSideVcsSupport.java Wed Jul 20 17:40:04 2011 +0400 @@ -81,7 +81,7 @@ try { logger.message("Init repository at " + workingDir.getAbsolutePath()); String defaultPullUrl = getDefaultPullUrl(settings, useLocalMirrors); - new InitCommand(settings, workingDir, defaultPullUrl).execute(); + new Init(settings, workingDir, defaultPullUrl).execute(); } catch (IOException e) { throw new VcsException("Error while initializing repository at " + workingDir.getAbsolutePath(), e); }
--- a/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/ChangeSet.java Wed Jul 20 15:10:49 2011 +0400 +++ b/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/ChangeSet.java Wed Jul 20 17:40:04 2011 +0400 @@ -16,6 +16,7 @@ package jetbrains.buildServer.buildTriggers.vcs.mercurial.command; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.Date; @@ -29,7 +30,7 @@ @NotNull private Date myTimestamp; private String myDescription; private boolean myContainsFiles; - private List<ChangeSetRevision> myParents = new ArrayList<ChangeSetRevision>(); + private List<ChangeSetRevision> myParents; public ChangeSet(final int revNumber, @NotNull final String id) { super(revNumber, id); @@ -59,11 +60,10 @@ myContainsFiles = containsFiles; } - public void clearParents() { - myParents.clear(); - } - public void addParent(@NotNull ChangeSetRevision rev) { + if (myParents == null) { + myParents = new ArrayList<ChangeSetRevision>(); + } myParents.add(rev); } @@ -94,10 +94,10 @@ } /** - * Returns parents of this change set (empty list for initial commit). + * Returns parrents of this change set, or null if there were no parents. * @return see above */ - @NotNull + @Nullable public List<ChangeSetRevision> getParents() { return myParents; } @@ -116,6 +116,6 @@ * @return true if changeset is initial changeset */ public boolean isInitial() { - return getParents().isEmpty(); + return getParents() == null; } }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/Init.java Wed Jul 20 17:40:04 2011 +0400 @@ -0,0 +1,36 @@ +package jetbrains.buildServer.buildTriggers.vcs.mercurial.command; + +import com.intellij.execution.configurations.GeneralCommandLine; +import jetbrains.buildServer.util.FileUtil; +import jetbrains.buildServer.vcs.VcsException; +import org.jetbrains.annotations.NotNull; + +import java.io.File; + +/** + * @author dmitry.neverov + */ +public class Init extends BaseCommand { + + private final String myDefaultPullUrl; + + public Init(@NotNull final Settings settings, @NotNull File workingDir, @NotNull String defaultPullUrl) { + super(settings, workingDir); + myDefaultPullUrl = defaultPullUrl; + } + + public void execute() throws VcsException { + new File(getWorkDirectory()).mkdirs(); + GeneralCommandLine cli = createCommandLine(); + cli.addParameter("init"); + runCommand(cli); + writeDefaultPath(); + } + + + private void writeDefaultPath() { + File hgrc = new File(new File(getWorkDirectory(), ".hg"), "hgrc"); + String content = "[paths]\ndefault = " + myDefaultPullUrl; + FileUtil.writeFile(hgrc, content); + } +}
--- a/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/InitCommand.java Wed Jul 20 15:10:49 2011 +0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +0,0 @@ -package jetbrains.buildServer.buildTriggers.vcs.mercurial.command; - -import com.intellij.execution.configurations.GeneralCommandLine; -import jetbrains.buildServer.util.FileUtil; -import jetbrains.buildServer.vcs.VcsException; -import org.jetbrains.annotations.NotNull; - -import java.io.File; - -/** - * @author dmitry.neverov - */ -public class InitCommand extends BaseCommand { - - private final String myDefaultPullUrl; - - public InitCommand(@NotNull final Settings settings, @NotNull File workingDir, @NotNull String defaultPullUrl) { - super(settings, workingDir); - myDefaultPullUrl = defaultPullUrl; - } - - public void execute() throws VcsException { - new File(getWorkDirectory()).mkdirs(); - GeneralCommandLine cli = createCommandLine(); - cli.addParameter("init"); - runCommand(cli); - writeDefaultPath(); - } - - - private void writeDefaultPath() { - File hgrc = new File(new File(getWorkDirectory(), ".hg"), "hgrc"); - String content = "[paths]\ndefault = " + myDefaultPullUrl; - FileUtil.writeFile(hgrc, content); - } -}
--- a/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/LogCommand.java Wed Jul 20 15:10:49 2011 +0400 +++ b/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/LogCommand.java Wed Jul 20 17:40:04 2011 +0400 @@ -103,11 +103,9 @@ List<ChangeSet> result = new ArrayList<ChangeSet>(); String[] lines = stdout.split("\n"); ChangeSet current = null; - ChangeSet prev = null; int lineNum = 0; boolean insideDescription = false; StringBuilder descr = new StringBuilder(); - boolean useTrivialParent = false; while (lineNum < lines.length) { String line = lines[lineNum]; lineNum++; @@ -119,14 +117,9 @@ descr.setLength(0); } - prev = current; String revAndId = line.substring(CHANGESET_PREFIX.length()).trim(); try { current = new ChangeSet(revAndId); - if (prev != null) { - current.addParent(prev); - useTrivialParent = true; - } result.add(current); } catch (IllegalArgumentException e) { LOG.warn("Unable to extract changeset id from the line: " + line); @@ -149,10 +142,6 @@ if (line.startsWith(PARENT_PREFIX)) { String parentRev = line.substring(PARENT_PREFIX.length()).trim(); - if (useTrivialParent) { - current.clearParents(); - useTrivialParent = false; - } current.addParent(new ChangeSetRevision(parentRev)); continue; }
--- a/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/ParentsCommand.java Wed Jul 20 15:10:49 2011 +0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,42 +0,0 @@ -package jetbrains.buildServer.buildTriggers.vcs.mercurial.command; - -import com.intellij.execution.configurations.GeneralCommandLine; -import jetbrains.buildServer.ExecResult; -import jetbrains.buildServer.util.StringUtil; -import jetbrains.buildServer.vcs.VcsException; -import org.jetbrains.annotations.NotNull; - -import java.io.File; -import java.util.Arrays; -import java.util.List; - -/** - * @author dmitry.neverov - */ -public class ParentsCommand extends BaseCommand { - - private final String myRevision; - - - public ParentsCommand(@NotNull Settings settings, @NotNull File workingDir, @NotNull String revision) { - super(settings, workingDir); - myRevision = revision; - } - - - public List<String> execute() throws VcsException { - GeneralCommandLine cli = createCommandLine(); - cli.addParameter("parents"); - cli.addParameter("--template"); - cli.addParameter("{rev}:{node|short}\n"); - cli.addParameter("--rev"); - cli.addParameter(myRevision); - ExecResult res = runCommand(cli); - return parseOutput(res.getStdout()); - } - - - private List<String> parseOutput(String output) { - return Arrays.asList(StringUtil.splitByLines(output)); - } -}
--- a/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupport.java Wed Jul 20 15:10:49 2011 +0400 +++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupport.java Wed Jul 20 17:40:04 2011 +0400 @@ -571,8 +571,6 @@ return result; } - setChangeSetParents(settings, workingDir, changeSets.get(0)); - // invoke status command for each changeset and determine what files were modified in these changesets StatusCommand st = new StatusCommand(settings, workingDir); ChangeSet prev = new ChangeSet(fromVersion); @@ -581,8 +579,8 @@ String prevId = prev.getId(); List<ChangeSetRevision> curParents = cur.getParents(); - boolean merge = curParents.size() > 1; - if (!merge) { + boolean merge = curParents != null && curParents.size() > 1; + if (curParents != null && !merge) { prevId = curParents.get(0).getId(); } @@ -600,9 +598,6 @@ List<VcsChange> files = toVcsChanges(modifiedFiles, prev.getFullVersion(), cur.getFullVersion(), checkoutRules); if (files.isEmpty() && !merge) continue; ModificationData md = new ModificationData(cur.getTimestamp(), files, cur.getDescription(), cur.getUser(), root, cur.getFullVersion(), cur.getId()); - for (ChangeSetRevision revision : cur.getParents()) { - md.addParentRevision(revision.getFullVersion()); - } if (merge) { md.setCanBeIgnored(false); } @@ -615,14 +610,6 @@ }; } - private void setChangeSetParents(Settings settings, File workingDir, ChangeSet cset) throws VcsException { - ParentsCommand parents = new ParentsCommand(settings, workingDir, cset.getFullVersion()); - List<String> parentRevisions = parents.execute(); - for (String parentRevision : parentRevisions) { - cset.addParent(new ChangeSet(parentRevision)); - } - } - @NotNull public BuildPatchPolicy getBuildPatchPolicy() { return new BuildPatchByCheckoutRules() {
--- a/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupportTest.java Wed Jul 20 15:10:49 2011 +0400 +++ b/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/MercurialVcsSupportTest.java Wed Jul 20 17:40:04 2011 +0400 @@ -456,20 +456,6 @@ } - public void collected_changes_should_contain_parents() throws Exception { - VcsRootImpl vcsRoot = createVcsRoot(mergeCommittsRepo()); - List<ModificationData> changes = collectChanges(vcsRoot, "0:e0ad3ddde5aa", "4:6eeb8974fe67", new CheckoutRules("")); - Map<String, List<String>> child2parent = new HashMap<String, List<String>>(); - for (ModificationData change : changes) { - child2parent.put(change.getVersion(), change.getParentRevisions()); - } - assertEquals(Arrays.asList("0:e0ad3ddde5aa"), child2parent.get("1:a3d15477d297")); - assertEquals(Arrays.asList("0:e0ad3ddde5aa"), child2parent.get("2:db8a04d262f3")); - assertEquals(Arrays.asList("2:db8a04d262f3"), child2parent.get("3:2538c02bafeb")); - assertEquals(Arrays.asList("1:a3d15477d297", "3:2538c02bafeb"), child2parent.get("4:6eeb8974fe67")); - } - - private void assertFiles(final List<String> expectedFiles, final ModificationData modificationData) { List<String> actualFiles = new ArrayList<String>(); for (VcsChange vc: modificationData.getChanges()) {
--- a/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/LogCommandTest.java Wed Jul 20 15:10:49 2011 +0400 +++ b/mercurial-tests/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/LogCommandTest.java Wed Jul 20 17:40:04 2011 +0400 @@ -42,7 +42,7 @@ assertEquals(toId, changeSet.getId()); assertEquals("pavel@localhost", changeSet.getUser()); assertEquals("dir1 created", changeSet.getDescription()); - assertTrue(changeSet.getParents().isEmpty()); + assertNull(changeSet.getParents()); } public void testMoreThanOneChangeSet() throws Exception {