Я пишу клиент Git, что немного сложно, потому что нет "Git спецификации", и хотя есть некоторая документация, она не является исчерпывающей. По сути, код git является спецификацией.
Моя последняя проблема заключается в том, как разобрать коммит git. Я думал, что формат был такой (EBNF):
commit = header* , "\n" , message ;
header = key , " " , value , "\n" ;
Это работало, пока я не нашел этот коммит в LLVM:
tree c02519f3f72b850fe67b54a2a04284b92b4947df
parent fed8c068922319cc6a84fd08e75eccf7376b21c4
author Roman Lebedev <lebedev.ri@gmail.com> 1574169814 +0300
committer Roman Lebedev <lebedev.ri@gmail.com> 1574169847 +0300
gpgsig -----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEjkF6151RK40WXe2HCDw+u0oWieAFAl3T7PcACgkQCDw+u0oW
ieAxOw//UURm9vZPv5i2qgu6Y3AKlj/jflBE8ZPrqe4CwJwmufcrMXQSAqm9i+es
tPn7ef0iNbkz7LZlkPbJ+CileFyMg3ErsPCnJVqi2FUwxlU/sCwwUV+U0AYP+vXY
MIXd84jh5CNJT5S9XN2Ql1Ff0mZJOD6Bfz7LT8iP8RmX9ukL+nrxG+yTx15TzW63
5OAoBw+f47IC3jCI1QPh+F3aL8O799vmfC7tZYAguxqtgALsbGQHaz4XDFGLqTHo
0vTZZDMG1wnw+hFUGjeDHp7FgHdhpgTQElABiCV7CpgsgnivwbNaEI6AyPXy7wj+
4u/rPdVb19w3stN36k5Z1QAjzOcV7c7/GhAe0AfLfcKeCJOa4hllXctre8046616
5qgTHV337gdX7DJt46Vk+8N7HVHMoSLh+QuI7koQkf1/snvrnRPSQtpTxv46RviJ
Q/IG9T/H1JeiSZZyhHTlo3nx/NcD86tdLH3O5qZ6H99zYD1phnR8rI66TIJO6SNb
hQ6UlbdwwW4Gt1nFdLmEp5MuXRUqWmcMhQZWKEhfZWANcUWFf2zSnnDXQK6BWkhM
/cUH7U6F6mPMyN1y0Osh3cT8EpJNCNCGP89WDrd9o0z0Vk4Mrlon5ormskcmsf4T
VAndfHoeMjZXWxUuMoe9Y8Hi7im0b7qKwwpGUeuJ981e6Rx/rAI=
=8e3l
-----END PGP SIGNATURE-----
[NFC][X86] Fixup comment in CodeGen/X86/cmov.ll
As noted in post-commit review for
https://reviews.llvm.org/D59035#inline-631659
Как мне разобрать это? Кажется, что он использует пробел в качестве первого символа каждой строки, чтобы указать продолжение значения заголовка. Это правильно?