From d302bf91179d5fc190dd3f2b8e2d41112b45cdfb Mon Sep 17 00:00:00 2001 From: Stefan Bodewig Date: Thu, 16 Oct 2008 13:26:00 +0000 Subject: [PATCH] Make cvsversion work for local repositories as well git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@705238 13f79535-47bb-0310-9956-ffa450edef68 --- WHATSNEW | 2 ++ .../tools/ant/taskdefs/cvslib/CvsVersion.java | 23 ++++++++++--- src/tests/antunit/taskdefs/cvs/cvs.xml | 32 +++++++++++++++++++ 3 files changed, 53 insertions(+), 4 deletions(-) create mode 100644 src/tests/antunit/taskdefs/cvs/cvs.xml diff --git a/WHATSNEW b/WHATSNEW index bf9f85286..3a5ad6fb5 100644 --- a/WHATSNEW +++ b/WHATSNEW @@ -451,6 +451,8 @@ Other changes: CVS_CLIENT_PORT. Bugzilla Report 30124. + * now works for local repositories as well. + Changes from Ant 1.7.0 TO Ant 1.7.1 ============================================= diff --git a/src/main/org/apache/tools/ant/taskdefs/cvslib/CvsVersion.java b/src/main/org/apache/tools/ant/taskdefs/cvslib/CvsVersion.java index c0ba641a1..d9e20813d 100644 --- a/src/main/org/apache/tools/ant/taskdefs/cvslib/CvsVersion.java +++ b/src/main/org/apache/tools/ant/taskdefs/cvslib/CvsVersion.java @@ -17,6 +17,7 @@ */ package org.apache.tools.ant.taskdefs.cvslib; +import org.apache.tools.ant.Project; import org.apache.tools.ant.taskdefs.AbstractCvsTask; import java.io.ByteArrayOutputStream; @@ -115,12 +116,17 @@ public class CvsVersion extends AbstractCvsTask { setCommand("version"); super.execute(); String output = bos.toString(); + log("Received version response \"" + output + "\"", + Project.MSG_DEBUG); StringTokenizer st = new StringTokenizer(output); boolean client = false; boolean server = false; String cvs = null; - while (st.hasMoreTokens()) { - String currentToken = st.nextToken(); + String cachedVersion = null; + boolean haveReadAhead = false; + while (haveReadAhead || st.hasMoreTokens()) { + String currentToken = haveReadAhead ? cachedVersion : st.nextToken(); + haveReadAhead = false; if (currentToken.equals("Client:")) { client = true; } else if (currentToken.equals("Server:")) { @@ -129,7 +135,11 @@ public class CvsVersion extends AbstractCvsTask { && currentToken.endsWith(")")) { cvs = currentToken.length() == 5 ? "" : " " + currentToken; } - if (client && cvs != null) { + if (!client && !server && cvs != null + && cachedVersion == null && st.hasMoreTokens()) { + cachedVersion = st.nextToken(); + haveReadAhead = true; + } else if (client && cvs != null) { if (st.hasMoreTokens()) { clientVersion = st.nextToken() + cvs; } @@ -141,8 +151,13 @@ public class CvsVersion extends AbstractCvsTask { } server = false; cvs = null; + } else if (currentToken.equals("(client/server)") + && cvs != null && cachedVersion != null + && !client && !server) { + client = server = true; + clientVersion = serverVersion = cachedVersion + cvs; + cachedVersion = cvs = null; } - } if (clientVersionProperty != null) { getProject().setNewProperty(clientVersionProperty, clientVersion); diff --git a/src/tests/antunit/taskdefs/cvs/cvs.xml b/src/tests/antunit/taskdefs/cvs/cvs.xml new file mode 100644 index 000000000..c9b447308 --- /dev/null +++ b/src/tests/antunit/taskdefs/cvs/cvs.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + +