diff options
| -rw-r--r-- | build.properties | 1 | ||||
| -rw-r--r-- | build.xml | 29 | ||||
| -rw-r--r-- | libbuild/GitRevTask/GitRevTask.java | 55 |
3 files changed, 36 insertions, 49 deletions
diff --git a/build.properties b/build.properties index 9372ea065..12986b97b 100644 --- a/build.properties +++ b/build.properties @@ -7,7 +7,6 @@ releaseVersion=1.01 stdReleaseFile=yacy_v${releaseVersion}_${DSTAMP}_${releaseNr}.tar.gz
sourceReleaseFile=yacy_src_v${releaseVersion}_${DSTAMP}_${releaseNr}.tar.gz
releaseFileParentDir=yacy
-releaseNr=$Revision: 9000 $
privateKeyFile=private.key
# defining some file/directory access rights
@@ -58,6 +58,9 @@ <property name="release_mac" location="${release}/MAC"/> <property name="git" location=".git"/> <property name="defaults" location="defaults"/> + + <!-- pseudo default releaseNr as fallback --> + <property name="releaseNr" value="9000" /> <!-- defining all needed directory names for packing search widget--> <property name="jquery" location="htroot/jquery/"/> @@ -95,33 +98,13 @@ <pathelement location="${libbuild}/org.eclipse.jgit-1.1.0.201109151100-r.jar" /> </classpath> </taskdef> - <gitRev repoPath="${yacyroot}" property="baseRevisionNr" /> - - <!-- replacing the old with the new revision number --> - <copy file="build.properties" tofile="build.properties.new"> - <filterchain> - <tokenfilter> - <replaceregex pattern="^releaseNr=(.*)" - replace="releaseNr=$Revision: ${baseRevisionNr} $" /> - </tokenfilter> - </filterchain> - </copy> - <delete file="build.properties"/> - <move file="build.properties.new" tofile="build.properties"/> + <gitRev repoPath="${yacyroot}" revprop="releaseNr" dateprop="DSTAMP" /> </target> <!-- reading the build properties from file --> - <!-- <target name="readBuildProperties" depends="determineGitRevision"> --> - <target name="readBuildProperties"> + <target name="readBuildProperties" depends="determineGitRevision"> <!-- loading some property values from file --> - <loadproperties srcFile="build.properties"> - <filterchain> - <tokenfilter> - <replaceregex pattern="^releaseNr=\$Revision:\s(.*)\s\$" - replace="releaseNr=\1"/> - </tokenfilter> - </filterchain> - </loadproperties> + <loadproperties srcFile="build.properties" /> </target> <!-- initializing all needed variables --> diff --git a/libbuild/GitRevTask/GitRevTask.java b/libbuild/GitRevTask/GitRevTask.java index 3d9302d98..c12d9b80b 100644 --- a/libbuild/GitRevTask/GitRevTask.java +++ b/libbuild/GitRevTask/GitRevTask.java @@ -1,8 +1,7 @@ import java.io.File; import java.io.IOException; +import java.text.SimpleDateFormat; import java.util.List; -import java.util.regex.Matcher; -import java.util.regex.Pattern; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Project; @@ -19,36 +18,48 @@ import org.eclipse.jgit.storage.file.FileRepositoryBuilder; public class GitRevTask extends org.apache.tools.ant.Task { private String repoPath; - private String property; + private String revprop; + private String dateprop; public void setRepoPath(final String repoPath) { this.repoPath = repoPath; } - public void setProperty(String property) { - this.property = property; + public void setRevprop(String revprop) { + this.revprop = revprop; + } + + public void setDateprop(String dateprop) { + this.dateprop = dateprop; } public void execute() { - if (this.property==null || this.property.length() == 0) { - log("svn entries file name property was not set properly",Project.MSG_ERR); + if (this.revprop==null || this.revprop.length() == 0) { + log("git entries file name revprop was not set properly",Project.MSG_ERR); + return; + } + if (this.dateprop==null || this.dateprop.length() == 0) { + log("git entries file name dateprop was not set properly",Project.MSG_ERR); return; } String revision = null; String lastTag = null; + String commitDate = null; try { final File src = new File(repoPath); final Repository repo = new FileRepositoryBuilder().readEnvironment() .findGitDir(src).build(); final ObjectId head = repo.resolve("HEAD"); - final String gitrev = head.getName().substring(0, 8); final Git git = new Git(repo); final List<RevTag> tags = git.tagList().call(); final RevWalk walk = new RevWalk(repo); - walk.markStart(walk.parseCommit(head)); + final RevCommit headCommit = walk.parseCommit(head); + final SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd"); + commitDate = df.format(headCommit.getAuthorIdent().getWhen()); + walk.markStart(headCommit); int distance = 0; for (final RevCommit commit : walk) { for (final RevTag tag : tags) { @@ -57,39 +68,33 @@ public class GitRevTask extends org.apache.tools.ant.Task { break; } } - if (lastTag == null) lastTag = findRev(commit.getFullMessage()); - if (lastTag != null || distance++ > 99) break; + if (lastTag != null || distance++ > 999) break; } walk.dispose(); if (lastTag == null) { - revision = "dev" + "-" + gitrev; + revision = "0000"; } else { - revision = lastTag + "-" + distance + "-" + gitrev; + revision = Integer.toString(distance + 9000); } - } catch (IOException e) { + } catch (final IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } Project theProject = getProject(); if (theProject != null) { - theProject.setProperty(this.property, lastTag); - log("Property '" + this.property + "' set to '" + revision + "'", Project.MSG_VERBOSE); + theProject.setProperty(this.revprop, revision); + log("Property '" + this.revprop + "' set to '" + revision + "'", Project.MSG_VERBOSE); + theProject.setProperty(this.dateprop, commitDate); + log("Property '" + this.dateprop + "' set to '" + commitDate + "'", Project.MSG_VERBOSE); } } - private String findRev(final String message) { - final Pattern pattern = Pattern.compile("trunk@(\\d{4})\\s+"); - final Matcher matcher = pattern.matcher(message); - if (matcher.find()) { - return matcher.group(1); - } - return null; - } - public static void main(String[] args) { GitRevTask gitRevTask = new GitRevTask(); gitRevTask.setRepoPath("/home/sgaebel/git/yacy.rc1"); + gitRevTask.setRevprop("baseRevisionNr"); + gitRevTask.setDateprop("DSTAMP"); gitRevTask.execute(); } |
