我在一家公司工作,该公司使用超过 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/