Class: Repository::Subversion
Class Method Summary
collapse
Instance Method Summary
collapse
Methods inherited from Repository
available_scm, #branches, #cat, #committer_ids=, #committers, #default_branch, #diff, #diff_format_revisions, #entries, #entry, factory, fetch_changesets, #find_changeset_by_name, #find_committer_user, #latest_changeset, #password, #password=, #properties, #root_url=, scan_changesets_for_issue_ids, #scan_changesets_for_issue_ids, #scm, #scm_adapter, scm_available, scm_command, #scm_name, scm_version_string, #supports_all_revisions?, #supports_annotate?, #supports_cat?, #tags, #url=
cipher_key, decrypt_text, encrypt_text, included
Class Method Details
.scm_adapter_class ⇒ Object
.scm_name ⇒ Object
29
30
31
|
# File 'app/models/repository/subversion.rb', line 29
def self.scm_name
'Subversion'
end
|
Instance Method Details
#fetch_changesets ⇒ Object
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
# File 'app/models/repository/subversion.rb', line 51
def fetch_changesets
scm_info = scm.info
if scm_info
db_revision = latest_changeset ? latest_changeset.revision.to_i : 0
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)
identifier_to = [identifier_from + 199, scm_revision].min
revisions = scm.revisions('', identifier_to, identifier_from, :with_paths => true)
revisions.reverse_each do |revision|
transaction do
changeset = Changeset.create(:repository => self,
:revision => revision.identifier,
:committer => revision.author,
:committed_on => revision.time,
:comments => revision.message)
revision.paths.each do |change|
changeset.create_change(change)
end unless changeset.new_record?
end
end unless revisions.nil?
identifier_from = identifier_to + 1
end
end
end
end
|
#latest_changesets(path, rev, limit = 10) ⇒ Object
41
42
43
44
|
# File 'app/models/repository/subversion.rb', line 41
def latest_changesets(path, rev, limit=10)
revisions = scm.revisions(path, rev, nil, :limit => limit)
revisions ? changesets.find_all_by_revision(revisions.collect(&:identifier), :order => "committed_on DESC", :include => :user) : []
end
|
#relative_path(path) ⇒ Object
Returns a path relative to the url of the repository
47
48
49
|
# File 'app/models/repository/subversion.rb', line 47
def relative_path(path)
path.gsub(Regexp.new("^\/?#{Regexp.escape(relative_url)}"), '')
end
|
#repo_log_encoding ⇒ Object
37
38
39
|
# File 'app/models/repository/subversion.rb', line 37
def repo_log_encoding
'UTF-8'
end
|
#supports_directory_revisions? ⇒ Boolean
33
34
35
|
# File 'app/models/repository/subversion.rb', line 33
def supports_directory_revisions?
true
end
|