Вопрос

В чем смысл этого Функция отключения в Git?

git commit --signoff

Когда я должен его использовать, если вообще использую?

Это было полезно?

Решение

Выход из системы - это требование для получения исправлений в ядре Linux и нескольких других проектах, но большинство проектов на самом деле его не используют.

Это было введено вслед за Судебный процесс ШОС, (и другие обвинения в нарушении авторских прав со стороны SCO, большинство из которых они на самом деле так и не подали в суд), в качестве Сертификат происхождения разработчика.Он используется для обозначения того, что вы подтверждаете, что вы создали рассматриваемый патч, или что вы подтверждаете, что, насколько вам известно, он был создан по соответствующей лицензии с открытым исходным кодом, или что он был предоставлен вам кем-то другим на этих условиях.Это может помочь создать цепочку людей, которые берут на себя ответственность за статус авторского права на рассматриваемый код, чтобы гарантировать, что защищенный авторским правом код, не выпущенный по соответствующей лицензии на свободное программное обеспечение (с открытым исходным кодом), не будет включен в ядро.

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

Выход из системы - это строка в конце сообщения о фиксации, которая удостоверяет, кто является автором фиксации.Его основная цель - улучшить отслеживание того, кто что сделал, особенно с помощью исправлений.

Пример фиксации:

Add tests to statement printer.

Signed-off-by: Super Developer <super.dev@gmail.com>

Он должен содержать реальное имя пользователя, если используется для проекта с открытым исходным кодом.

Если сопровождающему ветки потребуется немного изменить исправления, чтобы объединить их, он мог бы попросить отправителя изменить формат, но это было бы контрпродуктивно.Он может скорректировать код и поставить свою подпись в конце, чтобы автор по-прежнему получал оценку за исправление, а не за внесенные ошибки.

Add tests to statement printer.

Signed-off-by: Super Developer <super.dev@gmail.com>

[uber.dev@gmail.com: Renamed test methods according to naming convention.]
Signed-off-by: Uber Developer <uber.dev@gmail.com>

Источник: http://gerrit.googlecode.com/svn/documentation/2.0/user-signedoffby.html

git 2.7.1 (февраль 2016) разъясняет, что в зафиксировать b2c150d (05 января 2016) автор Дэвид А.Уилер (david-a-wheeler).
(Объединено Джунио Си Хамано -- gitster -- в совершить 7aae9ba, 05 февраля 2016)

git commit справочная страница теперь включает в себя:

-s::
--signoff::

Добавить Signed-off-by строка коммиттера в конце сообщения журнала фиксации.
Значение выхода из системы зависит от проекта, но это обычно подтверждает, что коммиттер имеет права на отправку этой работы по той же лицензии и соглашается с сертификатом происхождения разработчика (см. https://developercertificate.org для получения дополнительной информации).


Разверните документацию, описывающую --signoff

Изменять различные файлы документа (справочной страницы), чтобы более подробно объяснить, что --signoff означает.

Это было вдохновлено "статья lwn "Боттомли:Скромное предложение по генеральному директору'" (Сертификат разработчика о происхождении), в котором Пауль отметил:

Проблема, с которой я сталкиваюсь с DCO, заключается в том, что там добавление "-s" аргумент для git commit на самом деле не означает, что вы даже слышали о DCO (в git commit справочная страница нигде не упоминает генерального директора), не говоря уже о том, что на самом деле видел это.

Итак , как может присутствие "signed-off-by" каким-либо образом подразумевается, что отправитель соглашается с DCO и берет на себя обязательства перед ним?В сочетании с фактом, что я видел ответы в списках на исправления без рыданий, в которых не говорится ничего, кроме "Повторно отправьте это с signed-off-by так что я могу это совершить".

Расширение документации git облегчит утверждение о том, что разработчики поняли --signoff когда они это используют.


Обратите внимание, что эта регистрация теперь (для Git 2.15.x / 2.16, 1 квартал 2018) доступна для git pull также.

Видишь зафиксировать 3a4d2c7 (12 октября 2017) автор W.Тревор Кинг (wking).
(Объединено Джунио Си Хамано -- gitster -- в зафиксировать fb4cd88, 06 ноября 2017)

pull:пройти --signoff/--no-signoff чтобы "git merge"

слияние может занять --signoff, но без прохождения тяги --signoff вниз, это неудобно использовать;разрешить 'pull' принять вариант и передать его до конца.

Есть несколько хороших ответов на этот вопрос.Я попытаюсь добавить более общий ответ, а именно о том, что представляют собой такого рода строки / заголовки / трейлеры в текущей практике.Не так много о заголовке sign-off в в частности (он не единственный).

Заголовки или Трейлеры (пункт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 <kernel@linuxace.com>
 Acked-by: Hugh Dickins <hughd@google.com>
 Reviewed-by: Michal Hocko <mhocko@suse.com>
 Cc: Andy Lutomirski <luto@kernel.org>
 Cc: Kees Cook <keescook@chromium.org>
 Cc: Oleg Nesterov <oleg@redhat.com>
 Cc: Willy Tarreau <w@1wt.eu>
 Cc: Nick Piggin <npiggin@gmail.com>
 Cc: Greg Thelen <gthelen@google.com>
 Cc: stable@vger.kernel.org
 Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

В дополнение к трейлеру “sign-off”, приведенному выше, есть:

  • “Cc” (был уведомлен об исправлении)
  • “Одобрено” (подтверждено владельцем кода: “на мой взгляд, выглядит неплохо”)
  • “Рецензент” (reviewed)
  • “Сообщено и протестировано” (сообщил и протестировал проблему (я предполагаю))

Другие проекты, такие как, например, Gerrit, имеют свои собственные заголовки и связанное с ними значение.

Видишь: https://git.wiki.kernel.org/index.php/CommitMessageConventions

Мораль этой истории

У меня сложилось впечатление, что, хотя первоначальной мотивацией для этого конкретных метаданных были некоторые юридические проблемы (судя по другим ответам), практика использования таких метаданных вышла за рамки просто разбираемся со случаем формирования цепочки авторства.

[↑1]: man git-interpret-trailers
[↑2]:Кажется, их также иногда называют “s-o-b” (инициалы).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top