Alias ​​para submodules

Estaba usando SVN anteriormente y he buscado, pero creo que utilizamos submodules de manera diferente. Al less cuando nos ramificamos Cuando ramificamos, queremos que los submodules se bifurquen y se usen en otras aplicaciones, así que actualmente tengo dos alias fáciles.

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" 

Aquellos que funcionan bien, sin embargo, el compromiso y la fusión son los obstáculos. Estaba tratando de pasar el post de confirmación, pero en cada submodule no pude ver cómo pasar el post y mantener un estado de devolución.

Así que la mitad de la solución terminé con pasar el post de compromiso, pero requiere vi edición para las confirmaciones de submodule, no del todo óptima. Esperaba que hubiera una forma de pasar el post pero no salir del bucle foreach en los submodules si el primero devuelve 0. Pero no podía ver las comillas simples requeridas y si las escapo con comillas dobles, el OR no funciona y sale del bucle.

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

Y el segundo problema es la combinación, esa que realmente necesito pasar en la twig que se está fusionando, y funciona bien si no hubo cambios en el submodule o si todos los submodules tuvieron cambios.

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

Si alguien con git-fu muy superior pudiera señalarme en la dirección correcta o señalar que un método mejor sería muy apreciado. Básicamente, solo intentamos tener un solo alias que autoda los submodules (ya que los ramificamos) por lo que no preferimos soluciones de terceros.

También actualmente alias push / pull pero funcionan bien.

 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" 

¡Gracias!