summaryrefslogtreecommitdiffstats
path: root/lib/redmine/scm/adapters/abstract_adapter.rb
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2008-04-27 10:12:15 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2008-04-27 10:12:15 +0000
commita73f68a185df00db1aaa153f576f106ee752c54d (patch)
tree09fab2647035c64e944b7df68e78618eeb6966be /lib/redmine/scm/adapters/abstract_adapter.rb
parent6a3236daea38f0cf8b62ccf9f1212eb0f0395b08 (diff)
downloadredmine-a73f68a185df00db1aaa153f576f106ee752c54d.tar.gz
redmine-a73f68a185df00db1aaa153f576f106ee752c54d.zip
Fixed: Links to repository directories don't work (#1119).
git-svn-id: http://redmine.rubyforge.org/svn/trunk@1365 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'lib/redmine/scm/adapters/abstract_adapter.rb')
-rw-r--r--lib/redmine/scm/adapters/abstract_adapter.rb13
1 files changed, 11 insertions, 2 deletions
diff --git a/lib/redmine/scm/adapters/abstract_adapter.rb b/lib/redmine/scm/adapters/abstract_adapter.rb
index 41edf00ad..2c254d48d 100644
--- a/lib/redmine/scm/adapters/abstract_adapter.rb
+++ b/lib/redmine/scm/adapters/abstract_adapter.rb
@@ -59,8 +59,17 @@ module Redmine
# Returns the entry identified by path and revision identifier
# or nil if entry doesn't exist in the repository
def entry(path=nil, identifier=nil)
- e = entries(path, identifier)
- e ? e.first : 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
# Returns an Entries collection