Sha256: d60ff2a7b2aaeb521cb2ebdd33ba0b338f1e8d1a4cca06e485cb6f403ec93629
Contents?: true
Size: 1.46 KB
Versions: 3
Compression:
Stored size: 1.46 KB
Contents
require 'grit' module Dandelion module Git class DiffError < StandardError; end class Repo < Grit::Repo def initialize(dir) super(dir) end end class Diff attr_reader :from_revision, :to_revision @files = nil def initialize(repo, from_revision, to_revision) @repo = repo @from_revision = from_revision @to_revision = to_revision begin @files = parse_diff @repo.git.native(:diff, {:name_status => true, :raise => true}, from_revision, to_revision) rescue Grit::Git::CommandFailed raise DiffError end end def changed @files.to_a.select { |f| ['A', 'C', 'M'].include?(f.last) }.map { |f| f.first } end def deleted @files.to_a.select { |f| 'D' == f.last }.map { |f| f.first } end private def parse_diff(diff) files = {} diff.split("\n").each do |line| status, file = line.split("\t") files[file] = status end files end end class Tree def initialize(repo, revision) @repo = repo @commit = @repo.commit(revision) @tree = @commit.tree end def files @repo.git.native(:ls_tree, {:name_only => true, :r => true}, revision).split("\n") end def show(file) (@tree / file).data end def revision @commit.sha end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
dandelion-0.2.1 | lib/dandelion/git.rb |
dandelion-0.2.0 | lib/dandelion/git.rb |
dandelion-0.1.7 | lib/dandelion/git.rb |