Sha256: e58b7950941d0ea43953f6adbb436877771b46da1ef3d850b1231140714950fe

Contents?: true

Size: 904 Bytes

Versions: 3

Compression:

Stored size: 904 Bytes

Contents

require 'grit'

module Git
  class Diff
    attr_reader :revision
  
    def initialize(dir, revision)
      @revision = revision
      @raw = `cd #{dir}; git diff --name-status #{@revision} HEAD`
    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
  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

3 entries across 3 versions & 1 rubygems

Version Path
dandelion-0.1.3 lib/dandelion/git.rb
dandelion-0.1.2 lib/dandelion/git.rb
dandelion-0.1.1 lib/dandelion/git.rb