diff options
author | Toshi MARUYAMA <marutosijp2@yahoo.co.jp> | 2011-05-04 18:07:50 +0000 |
---|---|---|
committer | Toshi MARUYAMA <marutosijp2@yahoo.co.jp> | 2011-05-04 18:07:50 +0000 |
commit | 18df827244b61da53a56d51e75f38aaed170b213 (patch) | |
tree | d80905941e6a11cc630e33ad493f5ab8873819cf /lib | |
parent | 97b4ee2fef78dc255f2c9b450938f12c073c0831 (diff) | |
download | redmine-18df827244b61da53a56d51e75f38aaed170b213.tar.gz redmine-18df827244b61da53a56d51e75f38aaed170b213.zip |
scm: git: override adapter entry() for browsing tree performance (#7047).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@5640 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'lib')
-rw-r--r-- | lib/redmine/scm/adapters/git_adapter.rb | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/lib/redmine/scm/adapters/git_adapter.rb b/lib/redmine/scm/adapters/git_adapter.rb index 592a1815a..68fbfd653 100644 --- a/lib/redmine/scm/adapters/git_adapter.rb +++ b/lib/redmine/scm/adapters/git_adapter.rb @@ -106,6 +106,20 @@ module Redmine bras.include?('master') ? 'master' : bras.first end + def entry(path=nil, identifier=nil) + parts = path.to_s.split(%r{[\/\\]}).select {|n| !n.blank?} + search_path = parts[0..-2].join('/') + search_name = parts[-1] + if search_path.blank? && search_name.blank? + # Root entry + Entry.new(:path => '', :kind => 'dir') + else + # Search for the entry in the parent directory + es = entries(search_path, identifier) + es ? es.detect {|e| e.name == search_name} : nil + end + end + def entries(path=nil, identifier=nil, options={}) entries_git(path, identifier, options) end |