【发布时间】:2015-10-15 18:06:45
【问题描述】:
我使用一个小脚本向 Git 查询最近更改了哪些文件,然后根据这些文件采取行动。
当调用该工具时,我运行 git status --porcelain 以获取要操作的文件列表。
但这在以下情况下会失效:
echo "lorum ipsum" > foo.txt
./tool `git status --porcelain` # tool acts upon foo.txt
git checkout .
./tool `git status --porcelain` # tool doesn't know to act upon foo.txt
有没有办法让 Git 告诉你哪个被跟踪的文件最后被修改了,即使它在 Git 眼中不再被修改?
也许是自上次 Git 查询以来最后更新的文件?还是最近一小时内更新的文件?
【问题讨论】:
-
有一个更通用的解决方案:github.com/facebook/watchman(这是一个沉重的工具,我自己没有尝试过。)
-
您希望您的脚本对自上次运行以来发生更改的每个文件进行操作? (此外,您的操作方法对于带有空格等的文件也不安全。)您可能需要查看
inotify及其各种工具、绑定等。 -
@EtanReisner 代码示例只是显示我意图的伪代码...是的,更具体地说,上次运行时,我将更新问题以使其更清楚。谢谢,我会研究 inotify