From a6589a254d07adef088cc5227c084f53c1030d15 Mon Sep 17 00:00:00 2001 From: Stephan Luetolf Date: Thu, 29 Dec 2016 13:12:14 +0100 Subject: [PATCH 1/3] Bug-fix: Test did not compile --- test/hunternif/jgitversion/TestGit.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/hunternif/jgitversion/TestGit.java b/test/hunternif/jgitversion/TestGit.java index 1c6fb2c..51c278e 100644 --- a/test/hunternif/jgitversion/TestGit.java +++ b/test/hunternif/jgitversion/TestGit.java @@ -5,7 +5,7 @@ public class TestGit { public static void main(String[] args) { try { - System.out.println(JGitVersionTask.getProjectVersion(new File("."))); + System.out.println(new JGitVersionTask().getProjectVersion(new File("."))); } catch (Exception e) { e.printStackTrace(); } From d6a59ca7d2fb94e9a382f3d496c650a30f462c1c Mon Sep 17 00:00:00 2001 From: Stephan Luetolf Date: Thu, 29 Dec 2016 13:13:32 +0100 Subject: [PATCH 2/3] Changing the type of attribute "dir" from String to File. This way relative paths are handled correctly --- src/hunternif/jgitversion/JGitVersionTask.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/hunternif/jgitversion/JGitVersionTask.java b/src/hunternif/jgitversion/JGitVersionTask.java index 5053c10..7bceb01 100644 --- a/src/hunternif/jgitversion/JGitVersionTask.java +++ b/src/hunternif/jgitversion/JGitVersionTask.java @@ -23,11 +23,11 @@ import org.gitective.core.filter.commit.CommitCountFilter; public class JGitVersionTask extends Task { - private String dir; + private File dir; private String property; private boolean tagonly; - public void setDir(String dir) { + public void setDir(File dir) { this.dir = dir; } public void setProperty(String property) { @@ -41,7 +41,7 @@ public void setTagonly(boolean tagonly) { @Override public void execute() throws BuildException { try { - String version = getProjectVersion(new File(dir)); + String version = getProjectVersion(dir); Project project = getProject(); if (project != null) { project.setProperty(property, version); From 0b14c5d19be9cebaab2b3376e839476ee4160068 Mon Sep 17 00:00:00 2001 From: Stephan Luetolf Date: Thu, 29 Dec 2016 14:08:06 +0100 Subject: [PATCH 3/3] Attribute tagonly can also be "auto" now. In this case the number of commits since last master tag is only included if not zero. --- .../jgitversion/JGitVersionTask.java | 27 ++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/src/hunternif/jgitversion/JGitVersionTask.java b/src/hunternif/jgitversion/JGitVersionTask.java index 7bceb01..da85e01 100644 --- a/src/hunternif/jgitversion/JGitVersionTask.java +++ b/src/hunternif/jgitversion/JGitVersionTask.java @@ -10,6 +10,7 @@ import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Project; import org.apache.tools.ant.Task; +import org.apache.tools.ant.types.EnumeratedAttribute; import org.eclipse.jgit.api.Git; import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.lib.ObjectId; @@ -23,9 +24,17 @@ import org.gitective.core.filter.commit.CommitCountFilter; public class JGitVersionTask extends Task { + + public static class BooleanOrAuto extends EnumeratedAttribute { + @Override + public String[] getValues() { + return new String[] { "true", "false", "auto" }; + } + } + private File dir; private String property; - private boolean tagonly; + private BooleanOrAuto tagonly; public void setDir(File dir) { this.dir = dir; @@ -34,7 +43,7 @@ public void setProperty(String property) { this.property = property; } - public void setTagonly(boolean tagonly) { + public void setTagonly(BooleanOrAuto tagonly) { this.tagonly = tagonly; } @@ -111,7 +120,19 @@ public String getProjectVersion(File repoDir) throws IOException, GitAPIExceptio if (tagName.isEmpty()) { version = "0"; } - version += tagName + ((!tagonly) ? "." + commitsSinceLastMasterTag : ""); + + boolean tagonlyEvaluated = false; // Default if attribute not set + if (tagonly != null) { + boolean isAuto = tagonly.getValue().equalsIgnoreCase("auto"); + if (isAuto) { + tagonlyEvaluated = commitsSinceLastMasterTag == 0; + } + else { + tagonlyEvaluated = Boolean.parseBoolean(tagonly.getValue()); + } + } + + version += tagName + ((!tagonlyEvaluated) ? "." + commitsSinceLastMasterTag : ""); return version; }