Class: Mercurial::DiffFactory

Inherits:
Object
  • Object
show all
Includes:
Helper
Defined in:
lib/mercurial-ruby/factories/diff_factory.rb

Overview

This class represents a factory for Diff instances.

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Helper

#hg, #hg_to_array, #shell

Constructor Details

#initialize(repository) ⇒ DiffFactory

Returns a new instance of DiffFactory.



12
13
14
# File 'lib/mercurial-ruby/factories/diff_factory.rb', line 12

def initialize(repository)
  @repository = repository
end

Instance Attribute Details

#repositoryObject (readonly)

Instance of Repository.



10
11
12
# File 'lib/mercurial-ruby/factories/diff_factory.rb', line 10

def repository
  @repository
end

Instance Method Details

#for_commit(commit, cmd_options = {}) ⇒ Object

Returns an array of Diff instances for a specified instance of Commit. Represents changeset’s diffs.

Example:

commit = repository.commits.by_hash_id('291a498f04e9')
repository.diffs.for_commit(commit)


23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/mercurial-ruby/factories/diff_factory.rb', line 23

def for_commit(commit, cmd_options={})
  [].tap do |returning|
    data = hg(["diff -c ?", commit.hash_id], cmd_options)
    chunks = data.split(/^diff/)[1..-1]
    unless chunks.nil?
      chunks.map do |piece| 
        piece = "diff" << piece
        returning << build(piece)
      end
    end
  end
end

#for_path(path, revision_a, revision_b, options = {}, cmd_options = {}) ⇒ Object



36
37
38
39
40
# File 'lib/mercurial-ruby/factories/diff_factory.rb', line 36

def for_path(path, revision_a, revision_b, options={}, cmd_options={})
  cmd = "diff ? -r ? -r ?"
  cmd << ' -w' if options[:ignore_whitespace]
  build(hg([cmd, path, revision_a, revision_b], cmd_options))
end