¿Cómo puedo hacer `git push –recurse-submodules = on-demand` cuando el repository padre está en la twig` develop` con esta nueva versión de git 2.13?

Antes de la git version 2.13 , todo era perfecto por aquí, pero ahora con esta versión rompieron mi flujo de trabajo:

 Push: process for submodule 'Packages/Advanced CSV' failed D:\SublimeText\Data> git.exe push --porcelain --progress --tags --recurse-submodules=on-demand origin refs/heads/develop:refs/heads/develop src refspec 'refs/heads/develop' must name a ref process for submodule 'Packages/Advanced CSV' failed 

Estoy usando el cliente Smartgit , y ahora cuando Smartgit el button, obtuve este error arriba. Buscando encontré que era una nueva actualización en el cliente de Git el problema:

  1. [smartgit] Push on demand dejó de funcionar en SmartGit 17.0.4

Parece que el comportamiento de git push recurse-submodules ha cambiado. Actualmente con 2.13 no puede ejecutar "git push –recurse-submodules = on-demand" si el repository principal se encuentra en una twig diferente de los repositorys secundarios, por ejemplo, el repository principal está en "desarrollo" y el sub-repo en "maestro".

Tenía la printing de que Jonathan y otros podrían considerar el hecho de que git push --recurse-submodules=on-demand no funciona como antes de un cambio involuntario. Me preguntó anteriormente si presionar sin un refspec funcionará para nosotros y respondí con un sí. La pregunta sigue siendo si todos están a bordo con change push sin refspec para usar push.default en el repository principal y en los submodules.

Aclamaciones,

JS

git push comportamiento de recurse.submodules cambiado en 2.13

No entendí la última parte without refspec to use push.default in the parent repo as well as submodules , ¿es una forma de hacer git push --recurse-submodules=on-demand cuando el repository padre está en la twig de develop y el los submodules están en la twig master ?

Si no es así, ¿cómo puedo hacer git push --recurse-submodules=on-demand cuando el repository padre está en la twig de develop , pero los submodules están en la twig master con esta nueva versión de git?


Actualizar

Creé este script que reproduce el problema localmente con controles remotos locales:

 # Create the directory structure rm -r -f main_repo rm -r -f main_repo_remote rm -r -f submodule_remote mkdir main_repo_remote mkdir submodule_remote mkdir main_repo mkdir main_repo/first_submodule cd main_repo # Setup the first_submodule cd first_submodule printf "# Submodule Repository\n\n" > README.md git init git add README.md git commit -m "Added the repository first commit." git init --bare ../../submodule_remote git remote add origin ../../submodule_remote git push origin master # Setup the main_repo cd .. printf "# Main Repo\n\nThis is the main repository which contains submodules\n" > README.md git init git add README.md git submodule add -- ../../submodule_remote "first_submodule" git commit -m "Added the main repository first commit." git init --bare ../main_repo_remote git remote add origin ../main_repo_remote git push origin master git checkout -b develop git push --set-upstream origin develop # Add an unpushed commit to the submodule cd first_submodule printf "Dirty\n\n" >> README.md git add README.md git commit -m "Added the repository second commit." # Go to the main repository and do the push cd .. git add first_submodule git commit -m "Added the main repository second commit." git push --recurse-submodules=on-demand 

En su última línea, estoy presionando sobre el repository principal, pero está fallando en la nueva versión de Git. Actualmente, la solución es abrir manualmente los submodules que deben empujarse y empujarlos antes para empujar el repository principal, ya que la opción --recurse-submodules=on-demand no funciona en el repository principal.

Este es un ejemplo de salida:

 $ sh create_bug.sh Initialized empty Git repository in D:/User/Downloads/test/main_repo/first_submodule/.git/ [master (root-commit) 69015bb] Added the repository first commit. 1 file changed, 2 insertions(+) create mode 100644 README.md Initialized empty Git repository in D:/User/Downloads/test/submodule_remote/ Counting objects: 3, done. Writing objects: 100% (3/3), 249 bytes | 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0) To ../../submodule_remote * [new branch] master -> master Initialized empty Git repository in D:/User/Downloads/test/main_repo/.git/ Adding existing repo at 'first_submodule' to the index [master (root-commit) 6af0279] Added the main repository first commit. 3 files changed, 7 insertions(+) create mode 100644 .gitmodules create mode 100644 README.md create mode 160000 first_submodule Initialized empty Git repository in D:/User/Downloads/test/main_repo_remote/ Counting objects: 4, done. Delta compression using up to 4 threads. Compressing objects: 100% (4/4), done. Writing objects: 100% (4/4), 430 bytes | 0 bytes/s, done. Total 4 (delta 0), reused 0 (delta 0) To ../main_repo_remote * [new branch] master -> master Switched to a new branch 'develop' Total 0 (delta 0), reused 0 (delta 0) To ../main_repo_remote * [new branch] develop -> develop [master 58e7111] Added the repository second commit. 1 file changed, 2 insertions(+) [develop 69f9588] Added the main repository second commit. 1 file changed, 1 insertion(+), 1 deletion(-) fatal: src refspec 'develop' must name a ref fatal: process for submodule 'first_submodule' failed fatal: The remote end hung up unexpectedly