gpt4 book ai didi

git - 如何打印子模块级别/深度

转载 作者:行者123 更新时间:2023-12-04 08:24:43 35 4
gpt4 key购买 nike

我有一个包含多个子模块的项目,我想列出每个子模块的相对深度
该项目:

main_project
submodule1
submodule1\submodule1_1
submodule1\submodule2_1\submodule2_1_1
submodule2\submodule2_1\submodule2_1_1\submodule2_1_1_1\
submodule3
我想得到的输出:
submodule1 - level 0
submodule1\submodule1_1 - level 1
submodule1\submodule2_1\submodule2_1_1 - level 2
submodule2\submodule2_1\submodule2_1_1\submodule2_1_1_1\ - level 3
submodule3 - level 0

最佳答案

git submodule foreach -q --recursive git rev-parse --git-dir |
awk '{split($0, a, "/modules/", s); print $0, "- Level", length(s)-1}'
解释:
git submodule foreach -q --recursive
对所有递归子模块运行命令。
git rev-parse --git-dir
对每个子模块运行此命令 — 显示其 .git/modules 的路径目录。例子:
$ git submodule foreach -q --recursive git rev-parse --git-dir

$root/.git/modules/mod1
$root/.git/modules/mod2
$root/.git/modules/mod3
$root/.git/modules/mod3/modules/subdir/submodule
示例中的所有模块都是 0 级模块,最后一个是 1 级模块。由于存在子目录(子模块比子模块的根更深),因此计数斜线无济于事。让我们数数 /modules/awk :
awk '{split($0, a, "/modules/", s); print $0, "- Level", length(s)-1}'
每个输入行都被 /modules/ 分割并将分隔符列表放入数组 s .然后我们只计算 /modules/的数量并很好地打印结果:
git submodule foreach -q --recursive git rev-parse --git-dir |
awk '{split($0, a, "/modules/", s); print $0, "- Level", length(s)-1}'

$root/.git/modules/mod1 - Level 0
$root/.git/modules/mod2 - Level 0
$root/.git/modules/mod3 - Level 0
$root/.git/modules/mod3/modules/subdir/submodule - Level 1
打印子模块工作目录:
$ git submodule foreach -q --recursive 'pwd; git rev-parse --git-dir' |
awk 'NR%2==1 {submodule=$0} NR%2==0 {split($0, a, "/modules/", s); print submodule, "- Level", length(s)-1}':

$root/mod1 - Level 0
$root/third-party/mod2 - Level 0
$root/third-party/mod3 - Level 0
$root/third-party/mod3/subdir/submodule - Level 1

关于git - 如何打印子模块级别/深度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65324989/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com