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
Public Class Methods
# File lib/rscm/revisions.rb, line 34 def initialize(revisions=[]) @revisions = revisions end
Public Instance Methods
# File lib/rscm/revisions.rb, line 59 def ==(other) self.to_s == other.to_s end
# File lib/rscm/revisions.rb, line 67 def [](n) @revisions[n] end
# 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
# File lib/rscm/revisions.rb, line 63 def each(&block) @revisions.each(&block) end
# File lib/rscm/revisions.rb, line 75 def empty? @revisions.empty? end
# File lib/rscm/revisions.rb, line 71 def length @revisions.length end
# File lib/rscm/revisions.rb, line 51 def sort! @revisions.sort!{|r1,r2| r1.time<=>r2.time} end
# File lib/rscm/revisions.rb, line 55 def to_s @revisions.collect{|revision| revision.to_s}.join("\n-----------") end