Git:总结子仓库

时间:2018-11-06 19:31:30

标签: git maven

可以说我有多个独立的子项目,它们都有自己的pom.xml和git-repo。 但是现在我将它们组装到一个项目X中。

project X
 - sub A
 - sub B
 - sub C

我想在X中生成所有子项目。我使用pom.xml将项目A到C作为模块来执行此操作。 X的生成将概括所有项目。 效果很好!

是否有办法将git-repos一起汇总? X中的提交应在每个项目中执行提交。相同的更新,...

2 个答案:

答案 0 :(得分:2)

git-submodule-foreach

git submodule提供了用于遍历所有子模块的实用程序:

在当前项目中的每个子模块中执行git commit的命令如下:

git submodule foreach "git commit"

git-foreach

为方便起见,我制作了一个简单的bash脚本,该脚本在当前项目及其所有子模块中运行任意命令。这样,我不必两次键入命令(一次输入父项目,然后再次输入git-submodule-foreach)

〜/ bin / git-foreach

#!/bin/bash
set -e
if [ "$*" == "" ]; then
    echo "Usage: $0 COMMAND"
    echo
    echo "Run an arbitrary COMMAND in the current git repository plus all of the submodules"
    echo
    exit 1
fi
echo "Entering '.'"
# run the command in PWD
"$@"

# now run the command on submodules
git submodule foreach "$*"

git-foreach可执行文件放在$PATH中的某个位置,然后在git repo中运行它:

# describe the commit at HEAD for the project and all subprojects:
git foreach git describe

答案 1 :(得分:0)

git没有Maven那样的“子项目”概念。

要完成您想要的操作,我在计算机上设置了(bash)功能:

git-all () 
{ 
  find ~/workspace -name .git -type d -print -execdir git "$@" \;
}

查找命令:

  • 在我的〜/ workspace中浏览所有文件夹(本地存储库)
  • 找到任何名为.git的目录
  • 打印出路径
  • 在该路径处执行git命令,然后执行其余的参数

所以我可以做类似的事情:

git-all commit -m "my commit"