Коммит 487128950df6ee433c131b5feaafe81ee86629f4
можно найти по адресу https://github.com/signalwire/freeswitch.git.
git log -1 487128950df6ee433c131b5feaafe81ee86629f4 --pretty=fuller
печатает:
commit 487128950df6ee433c131b5feaafe81ee86629f4
Author: Travis Cross <[email protected]>
AuthorDate: Fri Mar 21 06:12:02 2014 +0000
Author: Anthony Minessale <[email protected]>
AuthorDate: Fri Mar 14 02:59:13 2014 +0500
Commit: Travis Cross <[email protected]>
CommitDate: Mon Mar 24 12:54:50 2014 +0000
Use the system version of APR / APR-util if possible
Autodetect whether the system libapr / libaprutil has our
necessary modifications and use it if it does.
У него 2 автора. Отправка этого коммита в Gitlab или Github может завершиться ошибкой, если включена проверка fsck, жалуясь remote: error: object 487128950df6ee433c131b5feaafe81ee86629f4: multipleAuthors: invalid format - multiple 'author' lines
.
Мне любопытно, как этот коммит был создан. Одним из решений для записи нескольких авторов является добавление Co-authored-by
в сообщение коммита. Поскольку можно создать коммит с двумя авторами, почему это не встроенный метод? И почему такой коммит считается плохим объектом git fsck
?
Объект фиксации git — это просто сжатый текстовый файл. У этой книги два автора.
$ pigz -d < .git/objects/48/7128950df6ee433c131b5feaafe81ee86629f4
commit 438tree 070633dfc3ea352dfb1094822f477111e519a9ca
parent cde20f6fe68523d9416d2fed72435a8ba880a269
author Travis Cross <[email protected]> 1395382322 +0000
author Anthony Minessale <[email protected]> 1394747953 +0500
committer Travis Cross <[email protected]> 1395665690 +0000
Use the system version of APR / APR-util if possible
Autodetect whether the system libapr / libaprutil has our
necessary modifications and use it if it does.
Мне любопытно, как этот коммит был создан.
Вы должны спросить Трэвиса Кросса, как именно они это сделали. Сделать коммит — это не намного больше, чем записать текст в файл.
Почему такая фиксация считается плохим объектом git fsck?
Внутри Git может быть только один автор для каждого коммита. Разрешение нескольких авторов потребует переделки внутренних компонентов.
Хотя git-log
будет отображать нескольких авторов, это, вероятно, особенность реализации. Другие инструменты не удостоят чести обоих авторов. Например, git shortlog --group=author
учитывается только коммит Энтони Майнесейла.
Если вам нужно несколько авторов, добавьте соавторов через «трейлеры».
Обратите внимание на дату 2014 года: тогда Git не проводил такой проверки согласованности (и/или, возможно, люди думали, что в то время Git должен разрешать несколько строк авторов). Есть ряд подобных исторических странностей, поэтому
git fsck
имеет все эти записи конфигурации для определения того, является ли какая-либо конкретная ошибка серьезной ошибкой или просто предупреждением.