Git:自动提交具有相同消息的子模块

Bojian Zheng

我的工作项目如下:

project/
  .git/
  .gitmodules
  submodule/  # submodule is a git submodule

我希望每当我在子模块中进行提交时。父模块projectsubmodule使用相同的提交消息进行提交。我试图使用commit-msg钩子来实现这一点

#!/bin/bash
# project/.git/modules/submodule/hooks/commit-msg
cd $(dirname ${BASH_SOURCE[0]})/../../../..
git commit submodule -m "$(cat $1)"

但这不起作用,因为我收到错误消息“错误:pathspec'子模块'与git已知的任何文件都不匹配”。原因似乎是因为该git commit命令还将调用该commit-msg钩子,从而导致递归调用。

我可以知道如何正确执行此操作吗?

jingx

commit-msg 可能不是执行此操作的最佳位置,因为它用于处理提交消息,并且在调用子模块时尚未进行提交。

这个post-commit挂钩对我有用:

COMMIT_MSG=$(git log -1 --pretty='format:%B' HEAD)
# I use zsh so $0 works for me. In bash BASH_SOURCE is correct
TOP=$(realpath $(dirname $0)/../../../..)

GIT_INDEX_FILE_SAV=$GIT_INDEX_FILE
unset GIT_INDEX_FILE
git --git-dir .git --work-tree . -C ${TOP} commit sub -m "${COMMIT_MSG}"
GIT_INDEX_FILE=$GIT_INDEX_FILE_SAV

调用该钩子时,我们位于git commit子模块的中间,因此GIT*根据子模块存储库设置了各种环境变量。我们需要重置它们,并让git使用父仓库中的值。

[编辑]更好的填充方法$TOP

TOP=$(git rev-parse --show-superproject-working-tree)

感谢@phd提出建议。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

git子模块签出相同的提交

来自分类Dev

git子模块签出相同的提交

来自分类Dev

在git中具有子模块的浅表克隆,如何使用指向提交而不是最新提交?

来自分类Dev

当我结帐母版时,git子模块具有“新提交”

来自分类Dev

Git-子模块,跟踪要使用的子模块提交

来自分类Dev

Git子模块和孤立的提交

来自分类Dev

使用子模块时,模块可以与包本身具有相同的名称吗?

来自分类Dev

如何自动拉git子模块?

来自分类Dev

如何自动拉git子模块?

来自分类Dev

如果子模块可能具有公共父目录,如何从子模块中删除.git文件?

来自分类Dev

如果子模块可能具有公共父目录,如何从子模块中删除.git文件?

来自分类Dev

使用带有grunt-git和grunt-githooks的子模块的后提交钩子来提交Git“ Supermodule”

来自分类Dev

Git子模块显示新的提交,子模块状态表明什么都没提交

来自分类Dev

有没有一种方法可以自动更新git子模块?

来自分类Dev

克隆所有子模块的git repo

来自分类Dev

Git子模块没有分离的头部?

来自分类Dev

Git clone-具有子模块的镜像无法正常工作

来自分类Dev

Ruby-包括两个模块,两个模块都具有一个具有相同名称的子模块

来自分类Dev

如何查看git子模块指向哪个提交

来自分类Dev

在git子模块中显示未推送的提交

来自分类Dev

Git:如何还原替换子模块的符号链接提交?

来自分类Dev

git子模块添加仅选择最新提交

来自分类Dev

无法通过子模块推送Git存储库的提交

来自分类Dev

使用特定的提交编号添加git子模块

来自分类Dev

Git子模块foreach别名提交工作

来自分类Dev

Git子模块的提交与主仓库中的标签匹配

来自分类Dev

git如何知道在哪个提交中检出子模块?

来自分类Dev

git子模块如何还原到提交的版本?

来自分类Dev

`git submodule update` 不会检出子模块中的提交

Related 相关文章

  1. 1

    git子模块签出相同的提交

  2. 2

    git子模块签出相同的提交

  3. 3

    在git中具有子模块的浅表克隆,如何使用指向提交而不是最新提交?

  4. 4

    当我结帐母版时,git子模块具有“新提交”

  5. 5

    Git-子模块,跟踪要使用的子模块提交

  6. 6

    Git子模块和孤立的提交

  7. 7

    使用子模块时,模块可以与包本身具有相同的名称吗?

  8. 8

    如何自动拉git子模块?

  9. 9

    如何自动拉git子模块?

  10. 10

    如果子模块可能具有公共父目录,如何从子模块中删除.git文件?

  11. 11

    如果子模块可能具有公共父目录,如何从子模块中删除.git文件?

  12. 12

    使用带有grunt-git和grunt-githooks的子模块的后提交钩子来提交Git“ Supermodule”

  13. 13

    Git子模块显示新的提交,子模块状态表明什么都没提交

  14. 14

    有没有一种方法可以自动更新git子模块?

  15. 15

    克隆所有子模块的git repo

  16. 16

    Git子模块没有分离的头部?

  17. 17

    Git clone-具有子模块的镜像无法正常工作

  18. 18

    Ruby-包括两个模块,两个模块都具有一个具有相同名称的子模块

  19. 19

    如何查看git子模块指向哪个提交

  20. 20

    在git子模块中显示未推送的提交

  21. 21

    Git:如何还原替换子模块的符号链接提交?

  22. 22

    git子模块添加仅选择最新提交

  23. 23

    无法通过子模块推送Git存储库的提交

  24. 24

    使用特定的提交编号添加git子模块

  25. 25

    Git子模块foreach别名提交工作

  26. 26

    Git子模块的提交与主仓库中的标签匹配

  27. 27

    git如何知道在哪个提交中检出子模块?

  28. 28

    git子模块如何还原到提交的版本?

  29. 29

    `git submodule update` 不会检出子模块中的提交

热门标签

归档