子模块的别名

问题描述 投票:3回答:1

之前是否使用过SVN而且我已经搜索过了,但我相信我们使用不同的子模块。至少当我们分支时。当我们分支时,我们希望子模块分支,以及它们在其他应用程序中使用,所以我目前有两个简单的别名。

sclone = "!f()  { branch=${1}; git checkout -b $branch; git submodule foreach -q --recursive git checkout -b $branch; }; f"

switch = "!f()  { branch=${1-master}; git checkout $branch; git submodule foreach -q --recursive git checkout $branch; }; f"

那些工作正常但是提交和合并是绊脚石。我试图传递提交消息但是对于每个子模块我都看不到如何传入消息并保持返回状态。

所以半解决方案我最终传递了提交消息,但它需要vi编辑子模块提交,不是很理想。我希望有一种方法仍然传递消息,但如果第一个返回0,则不会退出子模块上的foreach循环。但我无法看到所需的单引号,如果我用双引号转义那些OR不工作,它退出循环。

scommit = "!f() { git submodule foreach -q --recursive 'git commit -a || :' ; git commit -am \" $1 \";}; f"

第二个问题是合并,我真的需要在合并的分支中传递,如果没有子模块更改或者所有子模块都有变化,它就可以正常工作。

smerge = "!f()  { git merge $1; git submodule foreach -q --recursive git merge $1;}; f"

如果有一个远远优于git-fu的人可以指出我正确的方向或指出一个更好的方法将非常感激。基本上只是尝试使用自动执行子模块的单个别名(因为我们将其分支)所以不喜欢第三方解决方案。

目前还推/拉别名,但这些工作正常。

spush = "!f()  { branch="$(git symbolic-ref head --short)"; git push origin $branch; git submodule foreach -q --recursive git push origin $branch; }; f"

spull = "!f()  { branch="$(git symbolic-ref head --short)"; git pull origin $branch; git submodule foreach -q --recursive git pull origin $branch; }; f"

谢谢!

git bash github
1个回答
0
投票

您可以将提交消息作为参数传递,这是我的解决方案,它需要手动目录路由:

soeput = "! msg=\"${1-Minor update}\" ; echo \"gput for [bimg, bx, bgfx, soe]\" ; cd F:/Git/soe/bimg ; sh -c 'git add -A && git commit -m \"$0\" && git push' \"$msg\"; cd ../bx ; sh -c 'git add -A && git commit -m \"$0\" && git push' \"$msg\"; cd ../bgfx && sh -c 'git add -A && git commit -m \"$0\" && git push' \"$msg\"; cd .. && sh -c 'git add -A && git commit -m \"$0\" && git push' \"$msg\""
© www.soinside.com 2019 - 2024. All rights reserved.