Sha256: f8a93641d63992214ba9bc2df55645e9ddf43739c36824dfaf6bec379ad45fc8
Contents?: true
Size: 1.04 KB
Versions: 1
Compression:
Stored size: 1.04 KB
Contents
require 'grit' module Git class DiffError < StandardError; end class Diff attr_reader :revision def initialize(dir, revision) @revision = revision @raw = `cd #{dir}; git diff --name-status #{@revision} HEAD` check_state! end def changed files_flagged ['A', 'C', 'M'] end def deleted files_flagged ['D'] end private def files_flagged(statuses) items = [] @raw.split("\n").each do |line| status, file = line.split("\t") items << file if statuses.include? status end items end def check_state! if $?.exitstatus != 0 raise DiffError end end end class Tree def initialize(dir, revision) @dir = dir @commit = Grit::Repo.new(dir).commit(revision) @tree = @commit.tree end def files `cd #{@dir}; git ls-tree --name-only -r #{revision}`.split("\n") end def show(file) (@tree / file).data end def revision @commit.sha end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
dandelion-0.1.4 | lib/dandelion/git.rb |