Mercurial > hg > mercurial
changeset 1109:e3fd42482b1b
fix TW-79815: retrieve the changed files with help of hg status command
author | pavel.sher |
---|---|
date | Mon, 10 Jul 2023 15:42:48 +0200 |
parents | 255677cf31fb |
children | 153015dd0389 317b39467feb |
files | mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerHgRepo.java mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/CollectChangesWithRevsets.java |
diffstat | 2 files changed, 21 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerHgRepo.java Wed Apr 27 15:11:54 2022 +0200 +++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/ServerHgRepo.java Mon Jul 10 15:42:48 2023 +0200 @@ -37,6 +37,7 @@ public class ServerHgRepo extends HgRepo { public final static HgVersion REVSET_HG_VERSION = new HgVersion(1, 7, 0); + public final static HgVersion MERGE_WITHOUT_CHANGED_FILES_VERSION = new HgVersion(5, 2, 0); private final CommandSettingsFactory myCommandSettingsFactory; private final ServerPluginConfig myConfig; protected final MercurialClasspathTemplate myLogTemplate = new MercurialClasspathTemplate("/buildServerResources/log.template", "hg.log.template"); @@ -99,6 +100,12 @@ return hgVersion.isEqualsOrGreaterThan(REVSET_HG_VERSION); } + // mercurial > 5.1 no longer reports changed files for the merge commits, see https://youtrack.jetbrains.com/issue/TW-79815 + public boolean supportsChangedFilesForMerges() throws VcsException { + HgVersion hgVersion = getHgVersion(); + return hgVersion.isLessThan(MERGE_WITHOUT_CHANGED_FILES_VERSION); + } + private HgVersion getHgVersion() throws VcsException { if (myContext != null) return myContext.getHgVersion(this);
--- a/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/CollectChangesWithRevsets.java Wed Apr 27 15:11:54 2022 +0200 +++ b/mercurial-server/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/CollectChangesWithRevsets.java Mon Jul 10 15:42:48 2023 +0200 @@ -52,9 +52,22 @@ revsets.append(" + ").append(from); } } - return myRepo.log(myRoot) + List<ChangeSet> result = myRepo.log(myRoot) .showCommitsFromAllBranches() .withRevsets(revsets.toString()) .call(); + + if (!myRepo.supportsChangedFilesForMerges()) { + for (ChangeSet cs: result) { + if (cs.getParents().size() > 1) { + // new version of Mercurial does not include merge commit changed files into the log + // let's fetch the files with a separate command (https://youtrack.jetbrains.com/issue/TW-79815) + final List<FileStatus> files = myRepo.status().fromRevision(cs.getParents().get(0).getId()).toRevision(cs.getId()).call(); + cs.setModifiedFiles(files); + } + } + } + + return result; } }