Sim, que tal 100k pais?
Aqui está um exemplo ao vivo do GitHub com uma mesclagem de 100k confirmações: https://github.com/cirosantilli/test-octopus-100k Gerado com este script .
Jogo de perguntas sobre cultura geral
Linus não gosta de confirmações com mais de 60 pais: https://www.destroyallsoftware.com/blog/2017/the-biggest-and-weirdest-commits-in-linux-kernel-git-history
É puxado, e está bom, mas há claramente um equilíbrio entre "a fusão de polvos é boa" e "Cristo, isso não é um polvo, é uma fusão de Cthulhu".
Dê uma olhada no formato do objeto de confirmação do Git
https://stackoverflow.com/questions/22968856/what-is-the-file-format-of-a-git-commit-object/37438460#37438460
A partir dessa análise, podemos ver que a lista de pais é uma lista arbitrária e separada de nova linha do tipo:
parent {parent_1_sha}
parent {parent_2_sha}
...
parent {parent_N_sha}
e assim um número arbitrário de pais é permitido.
Exemplo mínimo
Roteiro:
#!/usr/bin/env bash
set -eu
mkdir tmp
cd tmp
git init
touch root
git add .
git commit -m root
sha_root="$(git log -1 --format="%H")"
touch 1
git add .
git commit -m 1
sha1="$(git log -1 --format="%H")"
git reset --hard "$sha_root"
touch 2
git add .
git commit -m 2
sha2="$(git log -1 --format="%H")"
git reset --hard "$sha_root"
touch 3
git add .
git commit -m 3
sha3="$(git log -1 --format="%H")"
git merge -m merge "$sha1" "$sha2"
Resultado:
*-. 2d2a6c2 (HEAD -> master) merge
|\ \
| | * 2300c18 2
| * | 7e096cb 1
| |/
* | 50aa125 3
|/
* a1e94fd root