2009年3月24日火曜日

SubversionのWindows版 Ruby Bindings バイナリでsvn info

相変わらずドキュメント少ないなぁ。
http://svn.collab.net/viewvc/svn/trunk/subversion/bindings/swig/ruby/test/ ここを参考にして、とりあえず svn info もどきを作ってみた。
svn_info.rb
#!/usr/local/bin/ruby -Ku
# -*- encoding: utf-8 -*-

require 'svn/core'
require 'svn/client'

def make_context(user, pass)
raise 'no block given' unless block_given?

ctx = Svn::Client::Context.new

ctx.add_simple_prompt_provider(0) do |cred, realm, username, may_save|
cred.username = user
cred.password = pass
cred.may_save = false
end

yield ctx
end

def svn_info(repos_url, user, pass)
make_context(user, pass) do |ctx|
ctx.info(repos_url, 'head') do |path, info|
puts <<INFO
Path: #{path}
URL: #{info.url}
Repository Root: #{info.repos_root_url}
Repository UUID: #{info.repos_UUID}
Revision: #{info.rev}
Node Kind: #{info.kind}
Last Changed Rev: #{info.last_changed_rev}
Last Changed Date: #{info.last_changed_date}
INFO
end
end
end

if $0 == __FILE__
svn_info(*ARGV)
end

0 件のコメント:

コメントを投稿