class RSCM::Revisions

A Revisions object is a collection of Revision objects with some additional behaviour.

Most importantly, it provides logic to group individual RevisionFile objects into Revision objects internally. This means that implementors of RSCM adapters that don't support atomic changesets can still emulate them, simply by adding RevisionFile objects to a Revisions object. Example:

revisions = Revisions.new
revisions.add revision_file_1
revisions.add revision_file_2
revisions.add revision_file_3

The added RevisionFile objects will end up in Revision objects grouped by their comment, developer and timestamp. A set of RevisionFile object with identical developer and message will end up in the same Revision provided their time attributes are a minute apart or less.

Each Revisions object also has an attribute cmd which should contain the command used to retrieve the revision data and populate it. This is useful for debugging an RSCM adapter that might behaving incorrectly. Keep in mind that it is the responsibility of each RSCM adapter implementation to set this attribute, and that it should omit setting it if the store_revisions_command is true

Attributes

cmd[RW]

Public Class Methods

new(revisions=[]) click to toggle source
# File lib/rscm/revisions.rb, line 34
def initialize(revisions=[])
  @revisions = revisions
end

Public Instance Methods

==(other) click to toggle source
# File lib/rscm/revisions.rb, line 59
def ==(other)
  self.to_s == other.to_s
end
[](n) click to toggle source
# File lib/rscm/revisions.rb, line 67
def [](n)
  @revisions[n]
end
add(file_or_revision) click to toggle source
# File lib/rscm/revisions.rb, line 38
def add(file_or_revision)
  if(file_or_revision.is_a?(Revision))
    @revisions << file_or_revision
  else
    revision = find { |a_revision| a_revision.accept?(file_or_revision) }
    if(revision.nil?)
      revision = Revision.new
      @revisions << revision
    end
    revision.add file_or_revision
  end
end
each(&block) click to toggle source
# File lib/rscm/revisions.rb, line 63
def each(&block)
  @revisions.each(&block)
end
empty?() click to toggle source
# File lib/rscm/revisions.rb, line 75
def empty?
  @revisions.empty?
end
length() click to toggle source
# File lib/rscm/revisions.rb, line 71
def length
  @revisions.length
end
sort!() click to toggle source
# File lib/rscm/revisions.rb, line 51
def sort!
  @revisions.sort!{|r1,r2| r1.time<=>r2.time}
end
to_s() click to toggle source
# File lib/rscm/revisions.rb, line 55
def to_s
  @revisions.collect{|revision| revision.to_s}.join("\n-----------")
end