Class RSCM::Revision
In: lib/rscm/revision.rb
Parent: Object

Represents a collection of File that were committed at the same time. Non-transactional SCMs (such as CVS and StarTeam) emulate Revision by grouping File s that were committed by the same developer, with the same commit message, and within a "reasonably" small timespan.

Methods

<<   <=>   ==   []   accept   each   length   new   pop   size   time=   to_s  

Included Modules

Enumerable

Attributes

developer  [RW] 
files  [R] 
identifier  [RW] 
message  [RW] 
time  [RW] 

Public Class methods

[Source]

     # File lib/rscm/revision.rb, line 123
123:     def initialize(files=[])
124:       @files = files
125:     end

Public Instance methods

[Source]

     # File lib/rscm/revision.rb, line 132
132:     def << (file)
133:       @files << file
134:       if(self.time.nil? || self.time < file.time unless file.time.nil?)
135:         self.time = file.time
136:         self.identifier = self.time if(self.identifier.nil? || self.identifier.is_a?(Time))
137:       end
138:       self.developer = file.developer if file.developer
139:       self.message = file.message if file.message
140:     end

[Source]

     # File lib/rscm/revision.rb, line 170
170:     def <=>(other)
171:       @time <=> other.time
172:     end

[Source]

     # File lib/rscm/revision.rb, line 166
166:     def ==(other)
167:       other.is_a?(self.class) && @files == other.files
168:     end

[Source]

     # File lib/rscm/revision.rb, line 142
142:     def [] (index)
143:       @files[index]
144:     end

[Source]

     # File lib/rscm/revision.rb, line 127
127:     def accept(visitor)
128:       visitor.visit_revision(self)
129:       @files.each{|file| file.accept(visitor)}
130:     end

Iterates over all the RevisionFile objects

[Source]

     # File lib/rscm/revision.rb, line 147
147:     def each(&block)
148:       @files.each(&block)
149:     end

[Source]

     # File lib/rscm/revision.rb, line 155
155:     def length
156:       @files.length
157:     end

[Source]

     # File lib/rscm/revision.rb, line 151
151:     def pop
152:       @files.pop
153:     end
size()

Alias for length

[Source]

     # File lib/rscm/revision.rb, line 160
160:     def time=(t)
161:       raise "time must be a Time object - it was a #{t.class.name} with the string value #{t}" unless t.is_a?(Time)
162:       raise "can't set time to an inferiour value than the previous value" if @time && (t < @time)
163:       @time = t
164:     end

String representation that can be used for debugging.

[Source]

     # File lib/rscm/revision.rb, line 183
183:     def to_s
184:       result = "#{identifier} | #{developer} | #{time} | #{message}\n"
185:       self.each do |file|
186:         result << " " << file.to_s << "\n"
187:       end
188:       result
189:     end

[Validate]