##// END OF EJS Templates
Fix repository browsing at given revision for various scm and add tests for this....
Fix repository browsing at given revision for various scm and add tests for this. git-svn-id: http://redmine.rubyforge.org/svn/trunk@1329 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r1314:154f60edd353
r1314:154f60edd353
Show More
darcs.rb
90 lines | 3.4 KiB | text/x-ruby | RubyLexer
Jean-Philippe Lang
Added Darcs basic support....
r570 # 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/darcs_adapter'
class Repository::Darcs < Repository
validates_presence_of :url
def scm_adapter
Redmine::Scm::Adapters::DarcsAdapter
end
def self.scm_name
'Darcs'
end
def entries(path=nil, identifier=nil)
Jean-Philippe Lang
Fix repository browsing at given revision for various scm and add tests for this....
r1314 patch = identifier.nil? ? nil : changesets.find_by_revision(identifier)
entries = scm.entries(path, patch.nil? ? nil : patch.scmid)
Jean-Philippe Lang
Added Darcs basic support....
r570 if entries
entries.each do |entry|
# Search the DB for the entry's last change
changeset = changesets.find_by_scmid(entry.lastrev.scmid) if entry.lastrev && !entry.lastrev.scmid.blank?
if changeset
entry.lastrev.identifier = changeset.revision
entry.lastrev.name = changeset.revision
entry.lastrev.time = changeset.committed_on
entry.lastrev.author = changeset.committer
end
end
end
entries
end
def diff(path, rev, rev_to, type)
patch_from = changesets.find_by_revision(rev)
Jean-Philippe Lang
Merged Git support branch (r1200 to r1226)....
r1222 return nil if patch_from.nil?
Jean-Philippe Lang
Added Darcs basic support....
r570 patch_to = changesets.find_by_revision(rev_to) if rev_to
if path.blank?
path = patch_from.changes.collect{|change| change.path}.join(' ')
end
Jean-Philippe Lang
Merged Git support branch (r1200 to r1226)....
r1222 patch_from ? scm.diff(path, patch_from.scmid, patch_to ? patch_to.scmid : nil, type) : nil
Jean-Philippe Lang
Added Darcs basic support....
r570 end
def fetch_changesets
scm_info = scm.info
if scm_info
db_last_id = latest_changeset ? latest_changeset.scmid : nil
Jean-Philippe Lang
Merged Git support branch (r1200 to r1226)....
r1222 next_rev = latest_changeset ? latest_changeset.revision.to_i + 1 : 1
Jean-Philippe Lang
Added Darcs basic support....
r570 # latest revision in the repository
scm_revision = scm_info.lastrev.scmid
unless changesets.find_by_scmid(scm_revision)
revisions = scm.revisions('', db_last_id, nil, :with_path => true)
transaction do
revisions.reverse_each do |revision|
changeset = Changeset.create(:repository => self,
:revision => next_rev,
:scmid => revision.scmid,
:committer => revision.author,
:committed_on => revision.time,
:comments => revision.message)
Jean-Philippe Lang
Merged Git support branch (r1200 to r1226)....
r1222
Jean-Philippe Lang
Added Darcs basic support....
r570 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
next_rev += 1
end if revisions
end
end
end
end
end