[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

RE: Filtering svn info output

From: Georges Labrèche <glabreche_at_stream57.com>
Date: Mon, 15 Jun 2009 11:59:40 -0400

Hello,

In my case "| grep ^Revision" wouldn't work for the same reason why ">> output.txt" wouldn't work.
I am using NAnt as a build script and the use of characters such as "|" or ">>" (via the use of &gt;&gt;) in the <svn /> or <exec /> task results in the following errors:

[svn] svn: Error resolving case of '|'
[svn] svn: Error resolving case of '>>'

Even though the same operations work when inputted directly in the command prompt window.
Further, the process being executed on a windows machine, the use of grep would not be possible unless installed and I would like to avoid dependencies to ensure the process executes in all machines.

Also, I can create an xml output but once again, because of NAnt I cannot write any output because of failure of the <svn /> or <exec /> tasks in resolving the case of '>>'. What I can do is use the <record /> task instead in which case it will write a malformed xml file because each line will begin with "[svn]"

Using the build script to do this is the answer. Through NAnt I can use regular expression to retrieve the information I need:

                <!-- The svn command line that will be executed in order to retrieve the latest HEAD revision number-->
                <property name="svn.info.command.line" value="info --revision HEAD"/>
                
                
                <!-- Get info on latest HEAD revision and record it in a file -->
                <record name="${svn.head.revision.file}" level="Info" action="Start"/>
                        <svn command="info"
                                 uri="${svn.trunk.url}">

                                <arg line="${svn.info.command.line}" />
                                
                        </svn>
                <record name="info" action="Close"/>
                        
                
                <!-- Load the written file into a property -->
                <loadfile file="info" property="svn.info" />
                
                <!-- Delete the written file, we don't need it anymore now that it has been set as a property -->
                <delete file="${svn.head.revision.file}" />
        
                <!-- Use regular expression to retrieve -->
                <regex pattern="Revision: (?'match'\d+)" input="${svn.info}" />
                <property name="svn.info.revision" value="${match}"/>
                 
                
                <echo>${svn.info.revision}</echo>

Thanks!

-----Original Message-----
From: Tyler Roscoe [mailto:tyler_at_cryptio.net]
Sent: Monday, June 15, 2009 11:43 AM
To: Georges Labrèche
Cc: users_at_subversion.tigris.org
Subject: Re: Filtering svn info output

On Mon, Jun 15, 2009 at 11:24:57AM -0400, Georges Labrèche wrote:
> When executing the svn info command I'd like to filter the output so that we only display the Revision information.
>
> This would greatly facilitate parsing out that information in my build script.

I think most people just do something like:

svn info | grep ^Revision

If this is already in a build script, just use your build script's
language to do this. You could also use --xml and parse that.

tyler

------------------------------------------------------
http://subversion.tigris.org/ds/viewMessage.do?dsForumId=1065&dsMessageId=2362236

To unsubscribe from this discussion, e-mail: [users-unsubscribe_at_subversion.tigris.org].
Received on 2009-06-15 18:00:50 CEST

This is an archived mail posted to the Subversion Users mailing list.