Search code examples
rubycommitshowgrit

In ruby/grit, how do I get a list of files changed in a specific commit?


I want a list of files affected by a certain commit in git. Through the command line, I can do this with:

git show --pretty="format:" --name-only (sha)

But how can I do this through Grit in Ruby?


Solution

  • You can use your_commit.diffs which returns an array of Grit::Diff instances. Grit::Diff has a_path and b_path properties.

    Some (untested) example code:

    paths = [];
    @commit.diffs.each do |diff|
        paths += [diff.a_path, diff.b_path]
    end
    paths.uniq!