Re: git push failing when push.recurseSubmodules on-demand and git commit --amend was used in submodule.
From: Stefan Beller <hidden>
Date: 2017-02-04 18:44:03
On Tue, Jan 31, 2017 at 5:10 PM, Carlo Wood [off-list ref] wrote:
On Tue, 31 Jan 2017 14:08:41 -0800 Stefan Beller [off-list ref] wrote:quoted
On Sun, Jan 29, 2017 at 5:00 PM, Junio C Hamano [off-list ref] wrote:quoted
2. If the amend is good and ready to go, "git add" to update the superproject to make that amended result the one that is needed in the submodule.yup.But that is what I am doing. The amended commit IS already added to the superproject (and pushed to the remote). Please have a look at my script, this happens here: # Correct that in the parent too: pushd parent git add subm git commit -m 'Updated subm.' popd
And if you were to use ammend here, too; there would be no problem; In the parent there are now two commits, the first one pointing at the first (unammended) commit in the submodule, the second pointing to the corrected commit.
The commit from before the amend was added to the super project (but never pushed) but has now been completely replaced. I still think this is a flaw in git. It shouldn't not complain and simply push.
The problem here is in the design. When "on-demand" is set, the parent repo determines which sumbodules needs pushing, then runs a plain "git push" in them and then checks again. The push operation in the submodule did not push out the un-amended commit (which is correct IMO). The parent in the second check determines that there is a commit, that is not pushed, though. Maybe we need an option there "on-demand-but-no-recheck" as a weaker promise what Git can deliver there.
-- Carlo Wood [off-list ref]