Я пишу кроссплатформенный скрипт ruby для управления некоторыми хранилищами Subversion. Первоначально я генерировал команды bash, но это оказалось очень недружественным для Windows. Затем я переписал свой сценарий, чтобы использовать привязки рубина SWIG, поставляемые с Subversion. Это прекрасно работает (что касается операций SVN) на всех необходимых платформах (Ubuntu, Fedora, OS X, Windows) с ruby 1.8.7.
Я использую гем svn_wc для абстрагирования части привязок, потому что я еще не понимаю низкоуровневый код.
Теперь моя проблема в том, что я должен предоставить учетные данные пользователя для привязок. svn_wc использует этот код :
ctx.add_simple_prompt_provider(0) do |cred, realm, username, may_save|
cred.username = @svn_user
cred.password = @svn_pass
cred.may_save = false
end
Если @svn_user
и @svn_pass
равны нулю, привязки завершаются ошибкой сегментации:
~/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/svn/util.rb:86:
[BUG] Segmentation fault
ruby 1.8.7 (2011-02-18 patchlevel 334) [i686-darwin10.8.0]
[1] 4381 abort my_script.rb
Если я прокомментирую весь этот фрагмент кода, моя команда svn завершится с ошибкой:
cant get info: subversion/libsvn_ra_neon/util.c:608:
Svn::Error::RaNotAuthorized: OPTIONS of 'https://my.subversion.url':
authorization failed: Could not authenticate to server:
rejected Basic challenge (https://my.subversion.url) (SvnWc::RepoAccessError)
Я не знаю, для чего предназначен параметр may_save
. Изменение его в true и отсутствие учетных данных все еще вызывает ошибку сегментации.
Мой сценарий должен использовать сохраненные, зашифрованные учетные данные так же, как двоичный файл командной строки. Я не хочу каждый раз вводить учетные данные или хранить их в незашифрованном файле конфигурации.
Я не нашел документации по этому поводу. Кто-нибудь знает, возможно ли это и как?