Method: VCLog::Adapters::Git#extract_changes

Defined in:
lib/vclog/adapters/git.rb

#extract_changesObject

Collect changes, i.e. commits.



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/vclog/adapters/git.rb', line 18

def extract_changes
  list = []

  command = 'git log --name-only --pretty=format:"' +
              GIT_COMMIT_MARKER +
              '%ci' +
              GIT_FIELD_MARKER +
              '%aN' +
              GIT_FIELD_MARKER +
              '%H' +
              GIT_FIELD_MARKER +
              '%s%n%n%b' +
              GIT_FIELD_MARKER +
              '"'

  changes = `#{command}`.split(RUBY_COMMIT_MARKER)

  changes.shift # throw the first (empty) entry away

  changes.each do |entry|
    date, who, id, msg, files = entry.split(RUBY_FIELD_MARKER)
    date  = Time.parse(date)
    files = files.split("\n")
    list << Change.new(:id=>id, :date=>date, :who=>who, :msg=>msg, :files=>files)
  end

  return list
end