-1

ruby の SVN バインディングを使用して、ファイルのコミット日を取得しようとしています。以下のコードは機能します。ただし、ブロックを使用して status メソッドから結果を取得する必要があるという事実には満足していません。より良い方法はありますか?

ctx = Svn::Client::Context.new()
ctx.add_simple_prompt_provider(2) do |cred, realm, user_name, may_save|
  cred.username = "sorin"
  cred.password = "realyniftypassword"
end

svndate = nil
ctx.status(path, "HEAD", true, true) do |path, status| 
    break if status.entry.nil?
    svndate = status.entry.cmt_date
end 

next if svndate.nil?

私は次のようなものを探しています:

svndate = ctx.status(path, "HEAD", true, true)[0].entry.cmt_date

ただし、ctx.status は整数を返します。

より適切な方法はありますか?

私は Ubuntu deb パッケージ libsvn-ruby1.8 を使用していますが、ネット上のいくつかの例を除いて、ドキュメントは見つかりませんでした。

4

1 に答える 1

1

今後の参考のために、役立つ可能性のある Ruby gem があります。

http://rubygems.org/gems/svn_wc
https://github.com/dvwright/svn_wc/

require 'svn_wc'
conf = {
  "svn_repo_master"       => "svn+ssh://sorin@192.168.10.1/opt/repo",
  "svn_user"              => "sorin",
  "svn_pass"              => "realyniftypassword",
  "svn_repo_working_copy" => "/tmp/local_working_repo/root",
  #"svn_repo_config_path"  => "/tmp/my_config"
}

svn = SvnWc::RepoAccess.new YAML::dump(conf)
repo_wc = conf['svn_repo_working_copy']
svn.list_entries(repo_wc, nil, verbose=true).each do |info|
  puts "#{info[:entry_name]} #{info[:cmt_date]}"
end
于 2012-06-26T20:56:28.247 に答える