##// END OF EJS Templates
Leave wiki links untouched if target project doesn't exist or have no wiki....
Leave wiki links untouched if target project doesn't exist or have no wiki. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@2436 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r2348:ab5e07e83ef2
r2375:70efee1bc5b8
Show More
subversion.rb
89 lines | 3.4 KiB | text/x-ruby | RubyLexer
Jean-Philippe Lang
Added basic support for CVS and Mercurial SCMs....
r556 # redMine - project management software
# Copyright (C) 2006-2007 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
require 'redmine/scm/adapters/subversion_adapter'
class Repository::Subversion < Repository
attr_protected :root_url
validates_presence_of :url
Jean-Philippe Lang
Subversion repository now accepts svn+ssh url....
r740 validates_format_of :url, :with => /^(http|https|svn|svn\+ssh|file):\/\/.+/i
Jean-Philippe Lang
Added basic support for CVS and Mercurial SCMs....
r556
def scm_adapter
Redmine::Scm::Adapters::SubversionAdapter
end
def self.scm_name
'Subversion'
end
Jean-Philippe Lang
Adds a setting to limit the number of revisions displayed on a repository file log (default=100)....
r2348 def changesets_for_path(path, options={})
revisions = scm.revisions(path, nil, nil, :limit => options[:limit])
Jean-Philippe Lang
Eager-load users....
r2007 revisions ? changesets.find_all_by_revision(revisions.collect(&:identifier), :order => "committed_on DESC", :include => :user) : []
Jean-Philippe Lang
Fixed: log is not displayed when browsing a copy in a svn repository....
r830 end
Jean-Philippe Lang
Fixed: View differences for individual file of a changeset fails if the subversion repository URL doesn't point to the repository root (#1209, #1262, #1275)....
r1432 # Returns a path relative to the url of the repository
def relative_path(path)
path.gsub(Regexp.new("^\/?#{Regexp.escape(relative_url)}"), '')
end
Jean-Philippe Lang
Added basic support for CVS and Mercurial SCMs....
r556 def fetch_changesets
scm_info = scm.info
if scm_info
# latest revision found in database
Jean-Philippe Lang
Merged Git support branch (r1200 to r1226)....
r1222 db_revision = latest_changeset ? latest_changeset.revision.to_i : 0
Jean-Philippe Lang
Added basic support for CVS and Mercurial SCMs....
r556 # latest revision in the repository
scm_revision = scm_info.lastrev.identifier.to_i
if db_revision < scm_revision
logger.debug "Fetching changesets for repository #{url}" if logger && logger.debug?
identifier_from = db_revision + 1
while (identifier_from <= scm_revision)
# loads changesets by batches of 200
identifier_to = [identifier_from + 199, scm_revision].min
revisions = scm.revisions('', identifier_to, identifier_from, :with_paths => true)
transaction do
revisions.reverse_each do |revision|
changeset = Changeset.create(:repository => self,
:revision => revision.identifier,
:committer => revision.author,
:committed_on => revision.time,
:comments => revision.message)
revision.paths.each do |change|
Change.create(:changeset => changeset,
:action => change[:action],
:path => change[:path],
:from_path => change[:from_path],
:from_revision => change[:from_revision])
end
end
end unless revisions.nil?
identifier_from = identifier_to + 1
end
end
end
end
Jean-Philippe Lang
Fixed: View differences for individual file of a changeset fails if the subversion repository URL doesn't point to the repository root (#1209, #1262, #1275)....
r1432
private
# Returns the relative url of the repository
# Eg: root_url = file:///var/svn/foo
# url = file:///var/svn/foo/bar
# => returns /bar
def relative_url
@relative_url ||= url.gsub(Regexp.new("^#{Regexp.escape(root_url)}"), '')
end
Jean-Philippe Lang
Added basic support for CVS and Mercurial SCMs....
r556 end