################################################################## # Licensing Information # # # # The following code is licensed, as standalone code, under # # the Ruby License, unless otherwise directed within the code. # # # # For information on the license of this code when distributed # # with and used in conjunction with the other modules in the # # Amp project, please see the root-level LICENSE file. # # # # © Michael J. Edgar and Ari Brown, 2009-2010 # # # ################################################################## module Amp module Core module Repositories ## # = CommonVersionedFileMethods # # These methods are common to all repositories, and this module is mixed into # the AbstractLocalRepository class. This guarantees that all repositories will # have these methods. # # No methods should be placed into this module unless it relies on methods in the # general API for repositories. module CommonVersionedFileMethods def unified_diff_with(other_vf, opts = {}) Diffs::Mercurial::MercurialDiff.unified_diff(self.data, self.changeset.easy_date, other_vf.data, other_vf.changeset.easy_date, self.path, other_vf.path || "/dev/null", false, opts) end ## # Compares two versioned files - namely, their data. # # @param [VersionedFile] other what to compare to # @return [Boolean] true if the two are the same def ===(other) self.path == other.path && self.data == other.data end # Returns if the file has been changed since its parent. Slow. # If your implementation has a fast way of doing this, we recommend # you override this method. # # @return [Boolean] has the file been changed since its parent? def clean? self === parents.first end opposite_method :dirty?, :clean? ## # User who committed this revision to this file # # @return [String] the user def user; changeset.user; end ## # Date this revision to this file was committed # # @return [DateTime] def date; changeset.date; end ## # The description of the commit that contained this file revision # # @return [String] def description; changeset.description; end ## # The branch this tracked file belongs to # # @return [String] def branch; changeset.branch; end ## # Working directory has no children! def children; []; end end end end end