Feature #4455 » hg-changeset-order.patch
app/models/repository/mercurial.rb | ||
---|---|---|
18 | 18 |
require 'redmine/scm/adapters/mercurial_adapter' |
19 | 19 | |
20 | 20 |
class Repository::Mercurial < Repository |
21 |
# sort changesets by revision number |
|
22 |
has_many :changesets, :order => "#{Changeset.table_name}.id DESC", :foreign_key => 'repository_id' |
|
23 | ||
21 | 24 |
attr_protected :root_url |
22 | 25 |
validates_presence_of :url |
23 | 26 | |
... | ... | |
52 | 55 |
entries |
53 | 56 |
end |
54 | 57 | |
58 |
# Returns the latest changesets for +path+; sorted by revision number |
|
59 |
def latest_changesets(path, rev, limit=10) |
|
60 |
if path.blank? |
|
61 |
changesets.find(:all, :include => :user, :limit => limit) |
|
62 |
else |
|
63 |
changes.find(:all, :include => {:changeset => :user}, |
|
64 |
:conditions => ["path = ?", path.with_leading_slash], |
|
65 |
:order => "#{Changeset.table_name}.id DESC", |
|
66 |
:limit => limit).collect(&:changeset) |
|
67 |
end |
|
68 |
end |
|
69 | ||
55 | 70 |
def fetch_changesets |
56 | 71 |
scm_info = scm.info |
57 | 72 |
if scm_info |
test/unit/repository_mercurial_test.rb | ||
---|---|---|
75 | 75 |
assert_equal @repository.changesets.find_by_revision('0').committed_on, rev0_committed_on |
76 | 76 |
end |
77 | 77 | |
78 |
def test_changeset_order_by_revision |
|
79 |
@repository.fetch_changesets |
|
80 |
@repository.reload |
|
81 |
c0 = @repository.latest_changeset |
|
82 |
c1 = @repository.changesets(nil, nil)[1] |
|
83 |
# sorted by revision (id), not by date |
|
84 |
assert c0.revision.to_i > c1.revision.to_i |
|
85 |
assert c0.committed_on < c1.committed_on |
|
86 |
end |
|
87 | ||
78 | 88 |
else |
79 | 89 |
puts "Mercurial test repository NOT FOUND. Skipping unit tests !!!" |
80 | 90 |
def test_fake; assert true end |