業務上、MIcrosoft Visual Source Safeを使っているため、
redMineみたいな物と縁が無いのが悔しいので、
rubyなら判るから、と勢いでadapterを作ってみましたが、需要とかありますかね?
#まだ完全とは言いがたいんですが、一通りの機能は何とか動くレベルです
需要がありそうなら、つたない英語でファイル/パッチを送ってみようかなぁと。
> rubyなら判るから、と勢いでadapterを作ってみましたが、需要とかありますかね?
おお!
すごいですね~。
> 需要がありそうなら、つたない英語でファイル/パッチを送ってみようかなぁと。
是非送ってみてください!
対応する構成管理システムが増えるのは、嬉しいことだと思いますよ。
では、後押しもいただいたので送ってみようかと思います。
でも小心者なのでとりあえずForumに一筆書いてからにしようかと。
#そもそもどう送るのが正しい?手段なのか判ってませんが。
残っている問題は、VSSはローカライズされていて、実行内容が「追加」とかでしか取れないのです。
HELPを見ると英語版のVSSだとActionになるようです。
これをAction/Modify等に変換してやらないといけないのですが、
言語選択をSCMの追加メニューに追加して取得したいと思ったのですが、そのやり方が判らない、と言うのがあります。
もしわかる方がいらっしゃいましたらご教授お願いします。
app/helpers/repositories_helper.rb
に上手くlangとかのdropdown listを追加したかったのですが、formにはそれっぽいメソッドが無いので。
http://rubyforge.org/tracker/index.php?func=detail&aid=13611&group_id=1850&atid=7162
試させていただきましたところ、VSSをリポジトリに設定してから
リポジトリのリンクをクリックするとエラー画面となってしまいました。
環境の問題でしょうか。
リポジトリ
SCM VisualSourceSafe
URL file://d:/vss/srcsafe.ini
URLに d:\vss\srcsafe.ini
と入力しても同じ現象でした。
VisualSourceSafe Ver6.0d
redMine Ver0.5.1
MySQL Ver 14.12 Distrib 5.0.45, for Win32 (ia32) (on XAMPP Ver2.5)
ruby 1.8.6 (2007-03-13 patchlevel 0) [i386-mswin32]
WindowsServer2003Standard
------以下エラー画面のメッセージ-------
WIN32OLERuntimeError in RepositoriesController#show
_invoke
OLE error code:80042BF2 in SourceSafe
Error loading resource string
HRESULT error code:0x80020009
例外が発生しました。
RAILS_ROOT: ./script/../config/..
Application Trace | Framework Trace | Full Trace
#{RAILS_ROOT}/lib/redmine/scm/adapters/visual_source_safe_adapter.rb:
1862:in `_invoke'
#{RAILS_ROOT}/lib/redmine/scm/adapters/visual_source_safe_adapter.rb:
1862:in `callOle'
#{RAILS_ROOT}/lib/redmine/scm/adapters/visual_source_safe_adapter.rb:
1879:in `info'
#{RAILS_ROOT}/lib/redmine/scm/adapters/abstract_adapter.rb:87:in
`retrieve_root_url'
#{RAILS_ROOT}/lib/redmine/scm/adapters/abstract_adapter.rb:31:in
`initialize'
#{RAILS_ROOT}/app/models/repository.rb:24:in `new'
#{RAILS_ROOT}/app/models/repository.rb:24:in `scm'
#{RAILS_ROOT}/app/models/repository/visual_source_safe.rb:52:in
`fetch_changesets'
#{RAILS_ROOT}/vendor/rails/activerecord/lib/active_record/
connection_adapters/abstract/database_statements.rb:59:in
`transaction'
#{RAILS_ROOT}/vendor/rails/activerecord/lib/active_record/
transactions.rb:95:in `transaction'
#{RAILS_ROOT}/vendor/rails/activerecord/lib/active_record/
transactions.rb:121:in `transaction'
#{RAILS_ROOT}/app/models/repository/visual_source_safe.rb:51:in
`fetch_changesets'
#{RAILS_ROOT}/vendor/rails/activerecord/lib/active_record/associations/
association_proxy.rb:123:in `send'
#{RAILS_ROOT}/vendor/rails/activerecord/lib/active_record/associations/
association_proxy.rb:123:in `method_missing'
#{RAILS_ROOT}/app/controllers/repositories_controller.rb:30:in `show'
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/base.rb:
1095:in `send'
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/base.rb:
1095:in `perform_action_without_filters'
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/filters.rb:
632:in `call_filter'
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/filters.rb:
634:in `call_filter'
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/filters.rb:
638:in `call_filter'
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/filters.rb:
438:in `call'
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/filters.rb:
637:in `call_filter'
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/filters.rb:
638:in `call_filter'
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/filters.rb:
438:in `call'
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/filters.rb:
637:in `call_filter'
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/filters.rb:
638:in `call_filter'
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/filters.rb:
438:in `call'
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/filters.rb:
637:in `call_filter'
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/filters.rb:
638:in `call_filter'
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/filters.rb:
438:in `call'
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/filters.rb:
637:in `call_filter'
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/filters.rb:
619:in `perform_action_without_benchmark'
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/
benchmarking.rb:66:in `perform_action_without_rescue'
D:/ruby/lib/ruby/1.8/benchmark.rb:293:in `measure'
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/
benchmarking.rb:66:in `perform_action_without_rescue'
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/rescue.rb:
83:in `perform_action'
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/base.rb:
430:in `send'
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/base.rb:
430:in `process_without_filters'
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/filters.rb:
624:in `process_without_session_management_support'
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/
session_management.rb:114:in `process'
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/base.rb:
330:in `process'
#{RAILS_ROOT}/vendor/rails/railties/lib/dispatcher.rb:41:in `dispatch'
#{RAILS_ROOT}/vendor/rails/railties/lib/webrick_server.rb:113:in
`handle_dispatch'
#{RAILS_ROOT}/vendor/rails/railties/lib/webrick_server.rb:79:in
`service'
D:/ruby/lib/ruby/1.8/webrick/httpserver.rb:104:in `service'
D:/ruby/lib/ruby/1.8/webrick/httpserver.rb:65:in `run'
D:/ruby/lib/ruby/1.8/webrick/server.rb:173:in `start_thread'
D:/ruby/lib/ruby/1.8/webrick/server.rb:162:in `start'
D:/ruby/lib/ruby/1.8/webrick/server.rb:162:in `start_thread'
D:/ruby/lib/ruby/1.8/webrick/server.rb:95:in `start'
D:/ruby/lib/ruby/1.8/webrick/server.rb:92:in `each'
D:/ruby/lib/ruby/1.8/webrick/server.rb:92:in `start'
D:/ruby/lib/ruby/1.8/webrick/server.rb:23:in `start'
D:/ruby/lib/ruby/1.8/webrick/server.rb:82:in `start'
#{RAILS_ROOT}/vendor/rails/railties/lib/webrick_server.rb:63:in
`dispatch'
#{RAILS_ROOT}/vendor/rails/railties/lib/commands/servers/webrick.rb:59
D:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in
`gem_original_require'
D:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in
`require'
#{RAILS_ROOT}/vendor/rails/activesupport/lib/active_support/
dependencies.rb:495:in `require'
#{RAILS_ROOT}/vendor/rails/activesupport/lib/active_support/
dependencies.rb:342:in `new_constants_in'
#{RAILS_ROOT}/vendor/rails/activesupport/lib/active_support/
dependencies.rb:495:in `require'
#{RAILS_ROOT}/vendor/rails/railties/lib/commands/server.rb:39
D:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in
`gem_original_require'
D:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in
`require'
script/server:3
On 9月6日, 午後6:15, Armadillo <Armadillo1...@gmail.com> wrote:
> 一応置いたのでポインタとして。
> バグ報告他歓迎です。
>
> http://rubyforge.org/tracker/index.php?func=detail&aid=13611&group_id...
報告ありがとうございます。
> VisualSourceSafe Ver6.0d
> redMine Ver0.5.1
> MySQL Ver 14.12 Distrib 5.0.45, for Win32 (ia32) (on XAMPP Ver2.5)
> ruby 1.8.6 (2007-03-13 patchlevel 0) [i386-mswin32]
> WindowsServer2003Standard
> _invoke
> OLE error code:80042BF2 in SourceSafe
> Error loading resource string
> HRESULT error code:0x80020009
> 例外が発生しました。
> RAILS_ROOT: ./script/../config/..
一応、私が試した環境は、WindowsXP SP2と
VisualSourceSafe2005(8.0.50727.42)、なので、その違いの可能性もあります。
redMineを実行しているサーバーにVSSはInstallされていますでしょうか?
Errorを見ると、invokeで失敗しているので、可能性としては
*VSSが居ない or 少なくとも、COM ComponentsとしてのVSSが見当たらない
*6.0と2005(8.0)でインターフェイス設計が違う
のどちらかではないかと思われます。
VSS6.0は探さないと出てこない&2005が居ない環境で試さないと確認不能
なので、申し訳ありませんが確認するのにはちょっと時間がかかりそうです。
はい、スタンドアローンで試していまして、
redMineを実行しているサーバーにVSSをインストールしているので、
やはりVisualSourceSafeのバージョンの問題の気がしてきています。
もしVSS2005が入手できたら、試してみて報告いたします。
で、内部表現の為か、@utl,@login、@passwordにto_sが必要だ、と言う事は判りました。
が...どうも多用しているVSSItemにVSSVersionメソッドが追加されたのが8.0からのようで、
ole_methodsでリストアップしても6.0の環境では見当たりません。
よって、2005以降のみ対応、と言う事になりそうです...
ユーザーは皆無だなぁとは思うのですが、
一応手元で色々といじってある程度以上実用に耐えれるかなぁと言うレベルになったので、
http://rubyforge.org/tracker/index.php?func=detail&aid=13611&group_id=1850&atid=7162
で更新しておきました。
一応、日本語環境でなら、追加/更新/削除、はある程度正しく表示されるようになったのと、
リポジトリの更新確認作業が今までの倍速程度にはなったはずです。
#それでも結局遅いんですが...これはOLEの構造が悪い/遅いのでなんとも。
後はNKFの代わりにICONVを使って機種依存文字があったときにオチるのを回避したのと、
ファイルのオープンをBinaryにしたので改行変換などでBinaryファイルが壊れるのを修正しました。
VSS2005を入手いたしましたので、再びチャレンジいたしましたので結果を報告いたします。
リポジトリにローカルDBを指定して試したところ、リポジトリ表示のタイミングでエラーとなりました。
FullTraceをここに載せるのは(ある程度量がありまして)気が引けまして、ApplicationTraceのみとりあえず載せます。
#{RAILS_ROOT}/lib/redmine/scm/adapters/visual_source_safe_adapter.rb:
2183:in `revisions'
#{RAILS_ROOT}/app/models/repository/visual_source_safe.rb:52:in
`fetch_changesets'
#{RAILS_ROOT}/app/models/repository/visual_source_safe.rb:51:in
`fetch_changesets'
#{RAILS_ROOT}/app/controllers/repositories_controller.rb:30:in `show'
お時間あるときに、「ここが変なんじゃないの?」など、もし思い当たりましたらご教授いただけましたら幸いです。
環境は、
VSS2005 (8.0.50727.42 32bit)
redMine Ver0.5.1
MySQL Ver 14.12 Distrib 5.0.45, for Win32 (ia32) (on XAMPP Ver2.5)
ruby 1.8.6 (2007-03-13 patchlevel 0) [i386-mswin32]
Windows2003Server
ちなみに最新のパッチを適用しているつもりです。
repository_helper.diff の差分適用
redmine.diff の差分適用
visual_source_safe_adapter.rb(2007-11-12Ver) を/lib/redmine/scm/
adapters/に配置
visual_source_safe.rb(2007-11-12Ver) を /app/models/repository/に配置
リポジトリ: c:/vsstest/srcsafe.ini