From: Jens Lehmann Date: Tue, 09 Jun 2015 18:52:22 GMT Subject: Re: format-patch and submodules Message-ID: <557735E6.8040906@web.de> In-Reply-To: Am 05.06.2015 um 01:20 schrieb Christopher Dunn: > (Seen in git versions: 2.1.0 and 1.9.3 et al.) > > $ git format-patch --stdout X^..X | git apply check - > fatal: unrecognized input > > This fails when the commit consists of nothing but a submodule change > (as in 'git add submodule foo'), but it passes when a file change is > added to the same commit. > > There used to be a similar problem for empty commits, but that was > fixed around git-1.8: > > http://stackoverflow.com/questions/20775132/cannot-apply-git-patch-replacing-a-file-with-a-link > > Now, 'git format-patch' outputs nothing for an empty commit. I suppose > that needs to be the behavior also when only submodules are changed, > since in that case there is no 'diff' section from 'format-patch'. > > Use-case: git-p4 > > Of course, we do not plan to add the submodule into Perforce, but we > would like this particular command to behave the same whether there > are other diffs or not. Hmm, I'm not sure that this is a bug. It looks to me like doing a $ git format-patch --stdout X^..X | git apply check - when nothing is changed except submodules and expecting it to work is the cause of the problem. I get the same error when I do: $git format-patch --stdout master..master | git apply --check - fatal: unrecognized input No submodules involved, just an empty patch. I assume you want to ignore all submodule changes, so you should check if e.g. "git diff --ignore-submodules X^..X" returns anything before applying that? (From the command you ran I assume you might be able to drop the --ignore-submodules because you already did set "diff.ignoreSubmodules" to "all"?)