diff --git a/build.xml b/build.xml
index e16cb9958..cc8f11b11 100644
--- a/build.xml
+++ b/build.xml
@@ -57,6 +57,7 @@
+
@@ -69,6 +70,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -111,7 +153,7 @@
-
+
@@ -508,12 +550,14 @@
+
+
diff --git a/libbuild/GitRevTask/GitRevTask.java b/libbuild/GitRevTask/GitRevTask.java
new file mode 100644
index 000000000..3d9302d98
--- /dev/null
+++ b/libbuild/GitRevTask/GitRevTask.java
@@ -0,0 +1,96 @@
+import java.io.File;
+import java.io.IOException;
+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;
+
+import org.eclipse.jgit.api.Git;
+import org.eclipse.jgit.lib.ObjectId;
+import org.eclipse.jgit.lib.Repository;
+import org.eclipse.jgit.revwalk.RevCommit;
+import org.eclipse.jgit.revwalk.RevTag;
+import org.eclipse.jgit.revwalk.RevWalk;
+import org.eclipse.jgit.storage.file.FileRepositoryBuilder;
+
+
+public class GitRevTask extends org.apache.tools.ant.Task {
+
+ private String repoPath;
+ private String property;
+
+ public void setRepoPath(final String repoPath) {
+ this.repoPath = repoPath;
+ }
+
+ public void setProperty(String property) {
+ this.property = property;
+ }
+
+ public void execute() {
+ if (this.property==null || this.property.length() == 0) {
+ log("svn entries file name property was not set properly",Project.MSG_ERR);
+ return;
+ }
+
+ String revision = null;
+ String lastTag = 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 tags = git.tagList().call();
+
+ final RevWalk walk = new RevWalk(repo);
+ walk.markStart(walk.parseCommit(head));
+ int distance = 0;
+ for (final RevCommit commit : walk) {
+ for (final RevTag tag : tags) {
+ if (commit.equals(tag.getObject())) {
+ lastTag = tag.getShortMessage();
+ break;
+ }
+ }
+ if (lastTag == null) lastTag = findRev(commit.getFullMessage());
+ if (lastTag != null || distance++ > 99) break;
+ }
+ walk.dispose();
+ if (lastTag == null) {
+ revision = "dev" + "-" + gitrev;
+ } else {
+ revision = lastTag + "-" + distance + "-" + gitrev;
+ }
+ } catch (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);
+ }
+ }
+
+ 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.execute();
+ }
+}
diff --git a/libbuild/GitRevTask/GitRevTask.properties b/libbuild/GitRevTask/GitRevTask.properties
new file mode 100644
index 000000000..13effd982
--- /dev/null
+++ b/libbuild/GitRevTask/GitRevTask.properties
@@ -0,0 +1 @@
+gitRev=GitRevTask
\ No newline at end of file
diff --git a/libbuild/org.eclipse.jgit-1.1.0.201109151100-r.jar b/libbuild/org.eclipse.jgit-1.1.0.201109151100-r.jar
new file mode 100644
index 000000000..40d5c0c50
Binary files /dev/null and b/libbuild/org.eclipse.jgit-1.1.0.201109151100-r.jar differ
diff --git a/libbuild/org.eclipse.jgit-1.1.0.201109151100-r.license b/libbuild/org.eclipse.jgit-1.1.0.201109151100-r.license
new file mode 100644
index 000000000..1b85c6466
--- /dev/null
+++ b/libbuild/org.eclipse.jgit-1.1.0.201109151100-r.license
@@ -0,0 +1,37 @@
+This program and the accompanying materials are made available
+under the terms of the Eclipse Distribution License v1.0 which
+accompanies this distribution, is reproduced below, and is
+available at http://www.eclipse.org/org/documents/edl-v10.php
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or
+without modification, are permitted provided that the following
+conditions are met:
+
+- Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+- Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+
+- Neither the name of the Eclipse Foundation, Inc. nor the
+ names of its contributors may be used to endorse or promote
+ products derived from this software without specific prior
+ written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.