summaryrefslogtreecommitdiffstats
path: root/lib
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
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')
-rw-r--r--lib/redmine/scm/adapters/abstract_adapter.rb13
-rw-r--r--lib/redmine/scm/adapters/bazaar_adapter.rb12
-rw-r--r--lib/redmine/scm/adapters/cvs_adapter.rb9
-rw-r--r--lib/redmine/scm/adapters/darcs_adapter.rb7
-rw-r--r--lib/redmine/scm/adapters/git_adapter.rb8
-rw-r--r--lib/redmine/scm/adapters/mercurial_adapter.rb8
-rw-r--r--lib/redmine/scm/adapters/subversion_adapter.rb7
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)