##// 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:

r1328:7aaa538fd9cb
r2375:70efee1bc5b8
Show More
mercurial.rb
94 lines | 3.7 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/mercurial_adapter'
class Repository::Mercurial < Repository
attr_protected :root_url
validates_presence_of :url
def scm_adapter
Redmine::Scm::Adapters::MercurialAdapter
end
def self.scm_name
'Mercurial'
end
def entries(path=nil, identifier=nil)
entries=scm.entries(path, identifier)
if entries
entries.each do |entry|
next unless entry.is_file?
Jean-Philippe Lang
Mercurial: display working directory files sizes unless browsing a specific revision (#999)....
r1318 # Set the filesize unless browsing a specific revision
if identifier.nil?
full_path = File.join(root_url, entry.path)
entry.size = File.stat(full_path).size if File.file?(full_path)
end
Jean-Philippe Lang
Added basic support for CVS and Mercurial SCMs....
r556 # Search the DB for the entry's last change
change = changes.find(:first, :conditions => ["path = ?", scm.with_leading_slash(entry.path)], :order => "#{Changeset.table_name}.committed_on DESC")
if change
entry.lastrev.identifier = change.changeset.revision
entry.lastrev.name = change.changeset.revision
entry.lastrev.author = change.changeset.committer
entry.lastrev.revision = change.revision
end
end
end
entries
end
def fetch_changesets
scm_info = scm.info
if scm_info
# latest revision found in database
Jean-Philippe Lang
Mercurial adapter:...
r1240 db_revision = latest_changeset ? latest_changeset.revision.to_i : -1
Jean-Philippe Lang
Added basic support for CVS and Mercurial SCMs....
r556 # latest revision in the repository
Jean-Philippe Lang
Fixed: error when browsing an empty Mercurial repository (#1046)....
r1328 latest_revision = scm_info.lastrev
return if latest_revision.nil?
scm_revision = latest_revision.identifier.to_i
Jean-Philippe Lang
Mercurial adapter:...
r1240 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 100
identifier_to = [identifier_from + 99, scm_revision].min
revisions = scm.revisions('', identifier_from, identifier_to, :with_paths => true)
transaction do
revisions.each do |revision|
changeset = Changeset.create(:repository => self,
:revision => revision.identifier,
:scmid => revision.scmid,
: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
Jean-Philippe Lang
Added basic support for CVS and Mercurial SCMs....
r556 end
Jean-Philippe Lang
Mercurial adapter:...
r1240 end unless revisions.nil?
identifier_from = identifier_to + 1
Jean-Philippe Lang
Added basic support for CVS and Mercurial SCMs....
r556 end
end
end
end
end