require "svn/core"
require "svn/client"
require "svn/wc"
require "svn/repos"
simple_prompt = Proc.new do
|result, realm, username, default, may_save, pool|
puts "Authentication realm: #{realm}"
if username != nil
result.username = username
else
print "Username: "
result.username = STDIN.gets.strip
end
print "Password for '#{result.username}': "
result.password = STDIN.gets.strip
end
if ARGV.length != 1
puts "Usage: info.rb URL[@REV]"
else
ctx = Svn::Client::Context.new()
ctx.add_platform_specific_client_providers
ctx.add_simple_provider
ctx.add_simple_prompt_provider(2, simple_prompt)
ctx.add_username_provider
ctx.add_ssl_server_trust_file_provider
ctx.add_ssl_client_cert_file_provider
ctx.add_ssl_client_cert_pw_file_provider
repos_uri, revision = ARGV[0].split("@", 2)
if revision
revision = Integer(revision)
end
begin
ctx.info(repos_uri, revision) do |path, info|
puts("Url: #{info.url}")
puts("Last changed rev: #{info.last_changed_rev}")
puts("Last changed author: #{info.last_changed_author}")
puts("Last changed date: #{info.last_changed_date}")
puts("Kind: #{info.kind}")
end
rescue Svn::Error => e
raise "Failed to retrieve SVN info at revision " + revision.to_s
end
end