【问题标题】:How to `git diff --name-only master` with rugged?如何使用坚固的`git diff --name-only master`?
【发布时间】:2015-08-18 01:33:41
【问题描述】:

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

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

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

【问题讨论】:

  • rugged 的​​自述文件有一个示例,通过遍历包含路径的增量列出 files that changed。有什么不适合你?
  • @carlos-martín-nieto,谢谢。我阅读了自述文件,但我无法让它工作,因为我还没有“已经有一个 diff 对象”,而且我不确定如何获得一个包含分阶段和非分阶段更改的对象。
  • @carlos-martín-nieto,我编辑了我的问题,明确提到了暂存文件和未暂存文件。

标签: ruby libgit2 rugged


【解决方案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")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-28
    • 2014-04-21
    • 2021-11-16
    • 2019-03-21
    • 1970-01-01
    • 2015-03-22
    相关资源
    最近更新 更多