В чем смысл функции выхода из системы в Git?
git commit --signoff
Когда я должен его использовать, если вообще?
В чем смысл функции выхода из системы в Git?
git commit --signoff
Когда я должен его использовать, если вообще?
Подписание - это требование для установки исправлений в ядро Linux и некоторые другие проекты, но в большинстве проектов оно фактически не используется.
Он появился после судебного процесса SCO (и другие обвинения SCO в нарушении авторских прав, по большей части из которых они так и не подали в суд), как Сертификат разработчика о происхождении. Он используется, чтобы сказать, что вы подтверждаете, что создали рассматриваемый патч, или что вы подтверждаете, что, насколько вам известно, он был создан по соответствующей лицензии с открытым исходным кодом или что он был предоставлен вам кем-то остальное в соответствии с этими условиями. Это может помочь создать цепочку людей, которые берут на себя ответственность за статус авторских прав на рассматриваемый код, чтобы гарантировать, что защищенный авторским правом код, выпущенный не под соответствующей лицензией на бесплатное программное обеспечение (с открытым исходным кодом), не включен в ядро.
Signed-off-by:
фиксации проектом ядра Linux (и самим проектом Git). Однако для других проектов такие строки бессмысленны, если проект не придает им значения (например, описывая их в документации проекта; например, Linux SubmittingPatches или Отправка исправлений).
- person Chris Johnsen; 07.07.2010
am
(созданные через format-patch
), несут с собой правильного автора, и этот автор применяется при применении патча. Для исправлений, примененных из вывода git diff
(который не содержит метаданных фиксации), выход из системы в любом случае не поможет, поскольку сообщение фиксации не связано с udiff.
- person void.pointer; 19.07.2015
Sign-off - это строка в конце сообщения фиксации, которая удостоверяет, кто является автором фиксации. Его основная цель - улучшить отслеживание того, кто что сделал, особенно с помощью исправлений.
Пример фиксации:
Add tests for the payment processor.
Signed-off-by: Humpty Dumpty <[email protected]>
Он должен содержать настоящее имя пользователя, если используется для проекта с открытым исходным кодом.
Если сопровождающему ветки потребуется немного изменить патчи, чтобы объединить их, он может попросить отправителя выполнить повторное определение, но это будет контрпродуктивно. Он может скорректировать код и поставить подпись в конце, чтобы исходный автор по-прежнему получил признание за патч.
Add tests for the payment processor.
Signed-off-by: Humpty Dumpty <[email protected]>
[Project Maintainer: Renamed test methods according to naming convention.]
Signed-off-by: Project Maintainer <[email protected]>
author
коммита git? Мне всегда казалось, что именно поэтому было отдельное поле author
и committer
. Автор является автором патча, а коммиттер - парнем, который применил и выпустил патч.
- person Leif Gruenwoldt; 30.08.2014
git 2.7.1 (февраль 2016 г.) поясняет, что в фиксации b2c150d (5 января 2016 г.) Дэвид А. Уиллер (david-a-wheeler
).
(объединено Junio C Hamano - gitster
- в commit 7aae9ba, 5 февраля 2016 г.)
git commit
справочная страница теперь включает:
-s::
--signoff::
Добавьте строку
Signed-off-by
от коммиттера в конце сообщения журнала фиксации.
Значение подписи зависит от проекта, но обычно удостоверяет, что коммиттер имеет право отправлять эту работу под той же лицензией и соглашается к исходному сертификату разработчика (дополнительную информацию см. в https://developercertificate.org).
Развернуть документацию с описанием
--signoff
Измените различные файлы документов (страниц руководства), чтобы более подробно объяснить, что означает
--signoff
.Это было вдохновлено «lwn статьей« Боттомли: скромное предложение по DCO »» (сертификат разработчика Происхождение), где Поль отметил:
Проблема с DCO заключается в том, что добавление аргумента "
-s
" к git commit на самом деле не означает, что вы даже слышали о DCO (на странице руководстваgit commit
не упоминается DCO где угодно), не говоря уже о том, что видел это на самом деле.Итак, как присутствие «
signed-off-by
» каким-либо образом может означать, что отправитель соглашается с DCO и принимает на себя обязательства? В сочетании с фактом я видел ответы на списки исправлений без SOB, в которых не было ничего, кроме «Отправить это повторно сsigned-off-by
, чтобы я мог его зафиксировать».Расширение документации git упростит утверждение, что разработчики поняли
--signoff
, когда они его используют.
Обратите внимание, что это подтверждение теперь (для Git 2.15.x / 2.16, Q1 2018) доступно и для git pull
.
См. commit 3a4d2c7 (12 октября 2017 г.) от W. Тревор Кинг (wking
).
(Объединено Junio C Hamano - gitster
- a> в commit fb4cd88, 06 ноября 2017 г.)
pull
: передать--signoff/--no-signoff
в "git merge
"merge может занять
--signoff
, но без перехода--signoff
вниз, неудобно использовать; позволитьpull
взять опцию и передать ее.
На этот вопрос есть несколько хороших ответов. Я постараюсь дать более широкий ответ, а именно о том, что такое строки / заголовки / трейлеры в текущей практике. Не столько о заголовке подписи в частности (он не единственный).
Заголовки или трейлеры (↑ 1), такие как «sign-off» (↑ 2), в современной практике таких проектов, как Git и Linux, представляют собой эффективно структурированные метаданные для фиксации. Все они добавляются в конец сообщения фиксации после «свободной формы» (неструктурированной) части тела сообщения. Это пары токен – значение (или ключ – значение), обычно разделенные двоеточием и пробелом (:␣
).
Как я уже упоминал, «подписка» - не единственный трейлер в текущей практике. См., Например, этот коммит, что связано с «Грязной коровой»:
mm: remove gup_flags FOLL_WRITE games from __get_user_pages()
This is an ancient bug that was actually attempted to be fixed once
(badly) by me eleven years ago in commit 4ceb5db9757a ("Fix
get_user_pages() race for write access") but that was then undone due to
problems on s390 by commit f33ea7f404e5 ("fix get_user_pages bug").
In the meantime, the s390 situation has long been fixed, and we can now
fix it by checking the pte_dirty() bit properly (and do it better). The
s390 dirty bit was implemented in abf09bed3cce ("s390/mm: implement
software dirty bits") which made it into v3.9. Earlier kernels will
have to look at the page state itself.
Also, the VM has become more scalable, and what used a purely
theoretical race back then has become easier to trigger.
To fix it, we introduce a new internal FOLL_COW flag to mark the "yes,
we already did a COW" rather than play racy games with FOLL_WRITE that
is very fundamental, and then use the pte dirty flag to validate that
the FOLL_COW flag is still valid.
Reported-and-tested-by: Phil "not Paul" Oester <[email protected]>
Acked-by: Hugh Dickins <[email protected]>
Reviewed-by: Michal Hocko <[email protected]>
Cc: Andy Lutomirski <[email protected]>
Cc: Kees Cook <[email protected]>
Cc: Oleg Nesterov <[email protected]>
Cc: Willy Tarreau <[email protected]>
Cc: Nick Piggin <[email protected]>
Cc: Greg Thelen <[email protected]>
Cc: [email protected]
Signed-off-by: Linus Torvalds <[email protected]>
В дополнение к трейлеру с подписью, приведенному выше, есть:
Другие проекты, такие как, например, Gerrit, имеют свои собственные заголовки и связанные с ними значения.
См .: https://git.wiki.kernel.org/index.php/CommitMessageConventions а>
У меня сложилось впечатление, что, хотя первоначальной мотивацией для этих конкретных метаданных были некоторые юридические вопросы (судя по другим ответам), практика таких метаданных вышла за рамки простого рассмотрения случая формирования цепочки авторства.
[↑ 1]: man git-interpret-trailers
[↑ 2]: Кажется, их также иногда называют «s-o-b» (инициалы).