Class: Repository::Subversion
Constant Summary
Constants inherited
from Repository
IDENTIFIER_MAX_LENGTH
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, #extra_info, factory, fetch_changesets, find_by_identifier_param, #find_changeset_by_name, #find_committer_user, human_attribute_name, #identifier=, #identifier_frozen?, #identifier_param, #latest_changeset, #merge_extra_info, #name, #password, #password=, #properties, #repo_create_validation, #report_last_commit, repository_class, #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_annotate?, #supports_cat?, #supports_history?, #supports_revision_graph?, #tags, #url=, #valid_name?
#delete_unsafe_attributes, included, #safe_attribute?, #safe_attribute_names, #safe_attributes=
cipher_key, decrypt_text, encrypt_text, included, logger
human_attribute_name
Class Method Details
.scm_adapter_class ⇒ Object
.scm_name ⇒ Object
30
31
32
|
# File 'app/models/repository/subversion.rb', line 30
def self.scm_name
'Subversion'
end
|
Instance Method Details
#fetch_changesets ⇒ Object
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
83
84
85
86
87
88
89
90
91
|
# File 'app/models/repository/subversion.rb', line 57
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)
unless revisions.nil?
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)
unless changeset.new_record?
revision.paths.each do |change|
changeset.create_change(change)
end
end
end
end
end
identifier_from = identifier_to + 1
end
end
end
end
|
#latest_changesets(path, rev, limit = 10) ⇒ Object
42
43
44
45
46
47
48
49
50
|
# File 'app/models/repository/subversion.rb', line 42
def latest_changesets(path, rev, limit=10)
revisions = scm.revisions(path, rev, nil, :limit => limit)
if revisions
identifiers = revisions.filter_map(&:identifier)
changesets.where(:revision => identifiers).reorder("committed_on DESC").includes(:repository, :user).to_a
else
[]
end
end
|
#relative_path(path) ⇒ Object
Returns a path relative to the url of the repository
53
54
55
|
# File 'app/models/repository/subversion.rb', line 53
def relative_path(path)
path.gsub(Regexp.new("^/?#{Regexp.escape(relative_url)}"), '')
end
|
#repo_log_encoding ⇒ Object
38
39
40
|
# File 'app/models/repository/subversion.rb', line 38
def repo_log_encoding
'UTF-8'
end
|
#supports_directory_revisions? ⇒ Boolean
34
35
36
|
# File 'app/models/repository/subversion.rb', line 34
def supports_directory_revisions?
true
end
|