Git - 找到上次跨多个 repo 修改文件的时间?

标签 git github

我在一家公司工作,该公司使用超过 100 个较小的存储库构建单个应用程序。

这些存储库中都有一个文件,比如 ivy.xml,它显示了项目对其他项目和第 3 方库的依赖性。

我希望能够在本地运行 git 命令,在我的开发机器上找出所有 repos 中 ivy.xml 文件的最后修改日期,并可能查看日志每个更改的声明和差异,即使我没有在本地检查所有 repo 协议(protocol),我当然从来没有这样做过,其中有超过 100 个!

如果这是从最近更改到最旧的更改排序,那就太棒了。

编辑:请注意,我愿意在我的用例中安装使用 git 或 github 的其他工具,以便在不下载所有存储库的情况下解决这个问题。

最佳答案

您必须克隆存储库,但是,这应该可以工作:

repos="path1 path2 path3"
file="your/file"
branchToCheck="origin/master"
for repo in repos; do cd $repo; edit=$(git log -n 1 --pretty='format:%ci %s %h' "$branchToCheck" "$file"); echo $edit $repo ; cd - ;done | sort -r

它会输出类似这样的内容:

2019-04-02 17:28:13 +0100 commit message COMMIT_HASH /path/to/repo1
2019-04-02 17:28:13 +0100 commit message COMMIT_HASH /path/to/repo2

按日期排序。

根据需要设置3个变量,并使用第4行作为一行。

编辑:

这是我刚刚使用 Github API 制作的替代方案,它需要 python3.6 或更高版本:

https://gist.github.com/padawin/adf58c682d41b0596c969beb212e35c6

如果存储库不是公开的(以提供身份验证),它将需要更新。

关于Git - 找到上次跨多个 repo 修改文件的时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55496873/

相关文章:

java - 用于 Git 或 TFS 的 Ivy 自定义解析器

linux - 如何将发布文件转换为 git repo

git - 无法推送到 github 存储库

git - 如何将文件和文件夹添加到 GitHub 存储库中?

c# - Git 存储库中不应包含哪些内容?

git - 如何从 git 存档中排除文件?

git - 单个GitHub存储库下的各种源存储库的嵌套结构

github - 如何使用命令行邀请用户加入组织内的私有(private) github 存储库

git - 无法克隆我的 Git 存储库

git - 如何将最后 N 个 merge 提交 merge 为一个?