从Git命令返回值(git status)

时间:2013-11-18 15:18:05

标签: git

我想在我的源代码的所有脏目录上运行make的脚本 - 是否有办法通过cmd行值以某种方式返回git status的输出?

基本上,我希望能够弹出一组更改,并运行此脚本来构建每个目录,而不是单独导航到每个目录并构建它们。

1 个答案:

答案 0 :(得分:3)

试试这个:

dirs = `git diff --name-only | xargs dirname | sort -u`.lines.map(&:chomp)
puts dirs

打破管道:

  • git diff --name-only:列出已修改文件的名称
  • xargs dirname:从stdin获取文件列表并输出其目录(将foo/bar.c转换为foo
  • sort -u:从目录列表中删除重复项。

在红宝石方面:

  • `command`:运行命令(如在shell中)并返回其输出(作为字符串)
  • String#lines:返回分为行
  • 的字符串数组
  • String#chomp:从字符串末尾删除任何换行符(String#lines没有)。