Snippet: SVN Info Parsing with YAML

Posted by kev Fri, 17 Aug 2007 23:44:00 GMT

require 'yaml'
require 'pp'
pp YAML.load(`svn info`) # =>
# {"Node Kind"=>"directory",
#  "Last Changed Author"=>"nzkoz",
#  "URL"=>"http://dev.rubyonrails.org/svn/rails/trunk",
#  "Schedule"=>"normal",
#  "Last Changed Rev"=>7332,
#  "Repository UUID"=>"5ecf4fe2-1ee6-0310-87b1-e25e094e27de",
#  "Repository Root"=>"http://dev.rubyonrails.org/svn/rails",
#  "Last Changed Date"=>"2007-08-16 18:11:11 -0700 (Thu, 16 Aug 2007)",
#  "Revision"=>7340,
#  "Path"=>"."}

Posted in  | 5 comments

Comments

  1. Avatar mike said about 3 hours later:

    Nice catch!

  2. Avatar mikkel said about 7 hours later:

    is nice - Borat

  3. Avatar javier ramírez said about 13 hours later:

    That’s a nice one. But svn info output depends on the machine’s locale, so you could run into potential errors when trying to use the parsed info.

    I prefer to take advantage of the—xml option you can pass to every svn command use XmlSimple.

    The XML nodes keep the name in English no matter what your locale is.

    >> pp XmlSimple.xml_in(`svn info --xml`)
    {"entry"=>
      [{"commit"=>
         [{"date"=>["2007-06-25T13:06:18.342675Z"],
           "author"=>["jramirez"],
           "revision"=>"278"}],
        "kind"=>"dir",
        "repository"=>
         [{"uuid"=>["ef259510-392e-0410-90f3-ae674396ba6e"],
           "root"=>["http://svn_aspgems/jramirez"]}],
        "wc-info"=>[{"schedule"=>["normal"]}],
        "url"=>["http://svn_aspgems/jramirez/trunk"],
        "revision"=>"278",
        "path"=>"."}]}
    

    regards,

    j

  4. Avatar gui said 5 days later:

    hpricot version:

    Hpricot::XML

    regards

  5. Avatar Evgeny said 15 days later:
    
    require 'pp'
    pp Marshal.load(`p4 -R info`) # =>
    
    # {"userName"=>"evgeny",
    #  "serverLicense"=>"BigCorp 371 users (support ends 2010/07/24) ",
    # "clientHost"=>"mysuperpc",
    # "clientAddress"=>"10.0.0.3:23456",
    # "code"=>"stat",
    # "monitor"=>"enabled",
    # "clientName"=>"evgeny-depot",
    # "serverRoot"=>"/perforce/p4d_server",
    # "password"=>"enabled",
    # "serverVersion"=>"P4D/SOLARIS10SPARC/2007.2/123611 (2007/05/31)",
    # "serverDate"=>"2007/09/02 20:01:21 +0300 IDT",
    # "serverAddress"=>"perforce.bigcorp.com:1667"}
    
    

Comments are disabled