【发布时间】:2014-02-20 20:47:12
【问题描述】:
Git 不会像这样跟踪目录。它只跟踪存在于某个目录中的文件。 (见How can I add an empty directory to a Git repository?)
但是,如果我有一定的提交历史,我隐含地也有目录树的更改历史。
那么我该如何回答这样的问题:
- foo/bar 目录是何时创建的(在 git 术语中:该目录中的第一个文件是何时创建的)。如果 foo/bar 已经存在,则可能有多个合格的提交 在历史上删除了一段时间,后来又重新创建了。
- 目录 foo/bar 何时被删除(在 git 术语中:最后一个文件何时从该目录中删除)。如上所述,可能有多个符合条件的提交。
- 历史上任何时间点存在的 foo/bar 的子目录是什么
我能想到的最接近的是伪代码:
loop over all commits (git rev-list --all)
start from repo root directory
do recursively on the directory tree rebuilt so far
call git ls-tree and grep the tree lines
rebuild next level of directory tree
end
end
显然,这可以用您最喜欢的脚本语言编写。
然后我有了所有目录树,我仍然需要以一种聪明的方式搜索它们,以便回答类型 1 - 3 的问题。同样,可行但可能不会在几分钟内完成。
问题是:
- 有没有更简单的方法?
- 如果不是:网络上已有的脚本是否合适? (我的谷歌搜索没有发现任何内容,但我也没有找到完美的搜索词)
【问题讨论】:
标签: git