diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2008-04-27 10:12:15 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2008-04-27 10:12:15 +0000 |
commit | a73f68a185df00db1aaa153f576f106ee752c54d (patch) | |
tree | 09fab2647035c64e944b7df68e78618eeb6966be /lib | |
parent | 6a3236daea38f0cf8b62ccf9f1212eb0f0395b08 (diff) | |
download | redmine-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')
-rw-r--r-- | lib/redmine/scm/adapters/abstract_adapter.rb | 13 | ||||
-rw-r--r-- | lib/redmine/scm/adapters/bazaar_adapter.rb | 12 | ||||
-rw-r--r-- | lib/redmine/scm/adapters/cvs_adapter.rb | 9 | ||||
-rw-r--r-- | lib/redmine/scm/adapters/darcs_adapter.rb | 7 | ||||
-rw-r--r-- | lib/redmine/scm/adapters/git_adapter.rb | 8 | ||||
-rw-r--r-- | lib/redmine/scm/adapters/mercurial_adapter.rb | 8 | ||||
-rw-r--r-- | lib/redmine/scm/adapters/subversion_adapter.rb | 7 |
7 files changed, 11 insertions, 53 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 diff --git a/lib/redmine/scm/adapters/bazaar_adapter.rb b/lib/redmine/scm/adapters/bazaar_adapter.rb index 11a44b7cf..2225a627c 100644 --- a/lib/redmine/scm/adapters/bazaar_adapter.rb +++ b/lib/redmine/scm/adapters/bazaar_adapter.rb @@ -44,18 +44,6 @@ module Redmine return nil end - # 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) - path ||= '' - parts = path.split(%r{[\/\\]}).select {|p| !p.blank?} - if parts.size > 0 - parent = parts[0..-2].join('/') - entries = entries(parent, identifier) - entries ? entries.detect {|e| e.name == parts.last} : nil - end - end - # Returns an Entries collection # or nil if the given path doesn't exist in the repository def entries(path=nil, identifier=nil) diff --git a/lib/redmine/scm/adapters/cvs_adapter.rb b/lib/redmine/scm/adapters/cvs_adapter.rb index 6085bfdbe..37920b599 100644 --- a/lib/redmine/scm/adapters/cvs_adapter.rb +++ b/lib/redmine/scm/adapters/cvs_adapter.rb @@ -55,15 +55,6 @@ module Redmine def get_previous_revision(revision) CvsRevisionHelper.new(revision).prevRev end - - # Returns the entry identified by path and revision identifier - # or nil if entry doesn't exist in the repository - # this method returns all revisions from one single SCM-Entry - def entry(path=nil, identifier="HEAD") - e = entries(path, identifier) - logger.debug("<cvs-result> #{e.first.inspect}") if e - e ? e.first : nil - end # Returns an Entries collection # or nil if the given path doesn't exist in the repository diff --git a/lib/redmine/scm/adapters/darcs_adapter.rb b/lib/redmine/scm/adapters/darcs_adapter.rb index 660b6cf8f..a1d1867b1 100644 --- a/lib/redmine/scm/adapters/darcs_adapter.rb +++ b/lib/redmine/scm/adapters/darcs_adapter.rb @@ -40,13 +40,6 @@ module Redmine rev ? Info.new({:root_url => @url, :lastrev => rev.last}) : nil end - # 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 - end - # Returns an Entries collection # or nil if the given path doesn't exist in the repository def entries(path=nil, identifier=nil) diff --git a/lib/redmine/scm/adapters/git_adapter.rb b/lib/redmine/scm/adapters/git_adapter.rb index 5d315b0cc..77604f283 100644 --- a/lib/redmine/scm/adapters/git_adapter.rb +++ b/lib/redmine/scm/adapters/git_adapter.rb @@ -132,14 +132,6 @@ module Redmine entries.sort_by_name end - def entry(path=nil, identifier=nil) - path ||= '' - search_path = path.split('/')[0..-2].join('/') - entry_name = path.split('/').last - e = entries(search_path, identifier) - e ? e.detect{|entry| entry.name == entry_name} : nil - end - def revisions(path, identifier_from, identifier_to, options={}) revisions = Revisions.new cmd = "#{GIT_BIN} --git-dir #{target('')} log --raw " diff --git a/lib/redmine/scm/adapters/mercurial_adapter.rb b/lib/redmine/scm/adapters/mercurial_adapter.rb index 72db723ba..6f42dda06 100644 --- a/lib/redmine/scm/adapters/mercurial_adapter.rb +++ b/lib/redmine/scm/adapters/mercurial_adapter.rb @@ -59,14 +59,6 @@ module Redmine return nil if $? && $?.exitstatus != 0 entries.sort_by_name end - - def entry(path=nil, identifier=nil) - path ||= '' - search_path = path.split('/')[0..-2].join('/') - entry_name = path.split('/').last - e = entries(search_path, identifier) - e ? e.detect{|entry| entry.name == entry_name} : nil - end def revisions(path=nil, identifier_from=nil, identifier_to=nil, options={}) revisions = Revisions.new diff --git a/lib/redmine/scm/adapters/subversion_adapter.rb b/lib/redmine/scm/adapters/subversion_adapter.rb index efbd3ba8e..40c7eb3f1 100644 --- a/lib/redmine/scm/adapters/subversion_adapter.rb +++ b/lib/redmine/scm/adapters/subversion_adapter.rb @@ -51,13 +51,6 @@ module Redmine return nil
end
- # 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
- end
-
# Returns an Entries collection
# or nil if the given path doesn't exist in the repository
def entries(path=nil, identifier=nil)
|