Project

General

Profile

Feature #4455 » hg-changeset-order.patch

Yuya Nishihara, 2010-07-29 19:05

View differences:

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
(21-21/24)