Class: Repository::Darcs

Inherits:
Repository
  • Object
show all
Defined in:
app/models/repository/darcs.rb

Constant Summary

Constants inherited from Repository

IDENTIFIER_MAX_LENGTH

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Repository

#<=>, available_scm, #branches, #committer_ids=, #committers, #default_branch, #diff_format_revisions, #entries, #extra_info, factory, fetch_changesets, find_by_identifier_param, #find_changeset_by_name, #find_committer_user, #identifier=, #identifier_frozen?, #identifier_param, #latest_changeset, #latest_changesets, #merge_extra_info, #name, #password, #password=, #properties, #relative_path, #repo_create_validation, #repo_log_encoding, #report_last_commit, #root_url=, #same_commits_in_scope, scan_changesets_for_issue_ids, #scan_changesets_for_issue_ids, #scm, #scm_adapter, scm_available, scm_command, #scm_name, scm_version_string, #set_as_default?, #stats_by_author, #supports_all_revisions?, #supports_annotate?, #supports_cat?, #supports_revision_graph?, #tags, #url=

Methods included from Redmine::SafeAttributes

#delete_unsafe_attributes, included, #safe_attribute?, #safe_attribute_names, #safe_attributes=

Methods included from Redmine::Ciphering

cipher_key, decrypt_text, encrypt_text, included, logger

Class Method Details

.human_attribute_name(attribute_key_name, *args) ⇒ Object


23
24
25
26
27
28
29
# File 'app/models/repository/darcs.rb', line 23

def self.human_attribute_name(attribute_key_name, *args)
  attr_name = attribute_key_name.to_s
  if attr_name == "url"
    attr_name = "path_to_repository"
  end
  super(attr_name, *args)
end

.scm_adapter_classObject


31
32
33
# File 'app/models/repository/darcs.rb', line 31

def self.scm_adapter_class
  Redmine::Scm::Adapters::DarcsAdapter
end

.scm_nameObject


35
36
37
# File 'app/models/repository/darcs.rb', line 35

def self.scm_name
  'Darcs'
end

Instance Method Details

#cat(path, identifier = nil) ⇒ Object


73
74
75
76
# File 'app/models/repository/darcs.rb', line 73

def cat(path, identifier=nil)
  patch = identifier.nil? ? nil : changesets.find_by_revision(identifier.to_s)
  scm.cat(path, patch.nil? ? nil : patch.scmid)
end

#diff(path, rev, rev_to) ⇒ Object


78
79
80
81
82
83
84
85
86
# File 'app/models/repository/darcs.rb', line 78

def diff(path, rev, rev_to)
  patch_from = changesets.find_by_revision(rev)
  return nil if patch_from.nil?
  patch_to = changesets.find_by_revision(rev_to) if rev_to
  if path.blank?
    path = patch_from.filechanges.collect{|change| change.path}.join(' ')
  end
  patch_from ? scm.diff(path, patch_from.scmid, patch_to ? patch_to.scmid : nil) : nil
end

#entry(path = nil, identifier = nil) ⇒ Object


43
44
45
46
# File 'app/models/repository/darcs.rb', line 43

def entry(path=nil, identifier=nil)
  patch = identifier.nil? ? nil : changesets.find_by_revision(identifier)
  scm.entry(path, patch.nil? ? nil : patch.scmid)
end

#fetch_changesetsObject


88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
# File 'app/models/repository/darcs.rb', line 88

def fetch_changesets
  scm_info = scm.info
  if scm_info
    db_last_id = latest_changeset ? latest_changeset.scmid : nil
    next_rev   = latest_changeset ? latest_changeset.revision.to_i + 1 : 1    # 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)
          revision.paths.each do |change|
            changeset.create_change(change)
          end
          next_rev += 1
        end if revisions
      end
    end
  end
end

#supports_directory_revisions?Boolean

Returns:

  • (Boolean)

39
40
41
# File 'app/models/repository/darcs.rb', line 39

def supports_directory_revisions?
  true
end