From 0f1ac3f9526e2ec4665d143679ca54e8c671615c Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Sat, 13 Jun 2015 19:56:16 +0200 Subject: [PATCH] expose latest changeset id of branch --- .../java/sonia/scm/repository/Branch.java | 35 +++++++++++++++++-- .../repository/spi/GitBranchesCommand.java | 2 +- .../scm/repository/spi/HgBranchesCommand.java | 13 ++++++- 3 files changed, 46 insertions(+), 4 deletions(-) diff --git a/scm-core/src/main/java/sonia/scm/repository/Branch.java b/scm-core/src/main/java/sonia/scm/repository/Branch.java index 9c16259d91..ac8a064c71 100644 --- a/scm-core/src/main/java/sonia/scm/repository/Branch.java +++ b/scm-core/src/main/java/sonia/scm/repository/Branch.java @@ -73,12 +73,28 @@ public final class Branch implements Serializable * * * @param name name of the branch + * + * @deprecated use {@link Branch#Branch(String, String)} instead */ + @Deprecated public Branch(String name) { this.name = name; } + /** + * Constructs a new branch. + * + * + * @param name name of the branch + * @param revision latest revision of the branch + */ + public Branch(String name, String revision) + { + this.name = name; + this.revision = revision; + } + //~--- methods -------------------------------------------------------------- /** @@ -104,7 +120,8 @@ public final class Branch implements Serializable final Branch other = (Branch) obj; - return Objects.equal(name, other.name); + return Objects.equal(name, other.name) + && Objects.equal(revision, other.revision); } /** @@ -116,7 +133,7 @@ public final class Branch implements Serializable @Override public int hashCode() { - return Objects.hashCode(name); + return Objects.hashCode(name, revision); } /** @@ -131,6 +148,7 @@ public final class Branch implements Serializable //J- return Objects.toStringHelper(this) .add("name", name) + .add("revision", revision) .toString(); //J+ } @@ -148,8 +166,21 @@ public final class Branch implements Serializable return name; } + /** + * Returns the latest revision of the branch. + * + * @return latest revision of branch + */ + public String getRevision() + { + return revision; + } + //~--- fields --------------------------------------------------------------- /** name of the branch */ private String name; + + /** Field description */ + private String revision; } diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitBranchesCommand.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitBranchesCommand.java index 6ffa1f28de..df32c2b5eb 100644 --- a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitBranchesCommand.java +++ b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitBranchesCommand.java @@ -105,7 +105,7 @@ public class GitBranchesCommand extends AbstractGitCommand if (branchName != null) { - branch = new Branch(branchName); + branch = new Branch(branchName, GitUtil.getId(ref.getObjectId())); } return branch; diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgBranchesCommand.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgBranchesCommand.java index d32560baac..64d544c5ed 100644 --- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgBranchesCommand.java +++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgBranchesCommand.java @@ -30,10 +30,13 @@ */ + package sonia.scm.repository.spi; //~--- non-JDK imports -------------------------------------------------------- +import com.aragost.javahg.Changeset; + import com.google.common.base.Function; import com.google.common.collect.Lists; @@ -92,7 +95,15 @@ public class HgBranchesCommand extends AbstractCommand @Override public Branch apply(com.aragost.javahg.commands.Branch hgBranch) { - return new Branch(hgBranch.getName()); + String node = null; + Changeset changeset = hgBranch.getBranchTip(); + + if (changeset != null) + { + node = changeset.getNode(); + } + + return new Branch(hgBranch.getName(), node); } });