Как может быть, что у объекта фиксации есть 2 автора?

Коммит 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?

Обратите внимание на дату 2014 года: тогда Git не проводил такой проверки согласованности (и/или, возможно, люди думали, что в то время Git должен разрешать несколько строк авторов). Есть ряд подобных исторических странностей, поэтому git fsck имеет все эти записи конфигурации для определения того, является ли какая-либо конкретная ошибка серьезной ошибкой или просто предупреждением.

torek 25.12.2020 07:39
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
8
1
545
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Объект фиксации 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 учитывается только коммит Энтони Майнесейла.

Если вам нужно несколько авторов, добавьте соавторов через «трейлеры».

Другие вопросы по теме