如何使用坚固耐用的`git diff --name-only master`?

时间:2015-08-18 01:33:41

标签: ruby libgit2 rugged

在Ruby中,使用rugged gem,如何完成以下等效操作?

%x(git diff --name-only master)

我需要列出已暂存或未暂存的已更改文件。

1 个答案:

答案 0 :(得分:1)

这是我提出的解决方案:

files0 = %x(git diff --name-only master).split($RS)

require 'rugged'
files1 = []
changed = %i(index_modified index_new worktree_modified worktree_new)
repo = Rugged::Repository.new(Dir.pwd)
repo.status { |f, d| files1 << f unless (changed & d).empty? }

puts(files0.sort == files1.sort ? "PASS" : "FAIL")