Який сенс функції відключення в Git ?
git commit --signoff
Коли я повинен його використовувати, якщо взагалі?
Який сенс функції відключення в Git ?
git commit --signoff
Коли я повинен його використовувати, якщо взагалі?
Відповіді:
Вихід - це необхідність отримання патчів у ядро Linux та кількох інших проектів, але більшість проектів насправді не використовують його.
Він був внесений після позову до ШОС (та інших звинувачень у порушенні авторських прав з боку ШОС , більшість з яких вони ніколи насправді не брали до суду), як свідоцтво про походження розробників . Зазвичай говорять, що ви підтверджуєте, що ви створили відповідний патч, або що ви засвідчуєте, що, наскільки вам відомо, він був створений за відповідною ліцензією з відкритим кодом або що він вам був наданий кимось інше за цими умовами. Це може допомогти створити ланцюжок людей, які беруть на себе відповідальність за статус авторського права відповідного коду, щоб гарантувати, що код, захищений авторським правом, не випущений відповідною ліцензією на вільне програмне забезпечення (відкритий код), не буде включений до ядра.
Вихід - це рядок в кінці повідомлення про фіксацію, який засвідчує, хто є автором комітету. Основна його мета - покращити відстеження того, хто що робив, особливо з патчами.
Приклад фіксації:
Add tests for the payment processor.
Signed-off-by: Humpty Dumpty <humpty.dumpty@example.com>
Він повинен містити справжнє ім'я користувача, якщо воно використовується для проекту з відкритим кодом.
Якщо для технічного обслуговування гілок потрібно трохи змінити патчі, щоб злити їх, він може попросити відправника переадресувати, але це буде контрпродуктивно. Він може відкоригувати код і поставити свій підпис в кінці, щоб оригінальний автор все-таки отримав кредит на виправлення.
Add tests for the payment processor.
Signed-off-by: Humpty Dumpty <humpty.dumpty@example.com>
[Project Maintainer: Renamed test methods according to naming convention.]
Signed-off-by: Project Maintainer <project.maintainer@example.com>
Джерело: http://gerrit.googlecode.com/svn/documentation/2.0/user-signedoffby.html
author
полі git комітету? Я завжди думав, що тому є окреме author
і committer
поле. Автор - автор-патч, а комітер - той хлопець, який застосував та натиснув патч.
git 2.7.1 (лютий 2016 р.) уточнює, що в команді b2c150d (05 січня 2016 р.) Девід А. Уілер ( david-a-wheeler
) .
(Об'єднав Хуніо С Хамано - gitster
- у комітеті 7aae9ba , 05 лютого 2016 р.)
git commit
сторінка man тепер включає:
-s::
--signoff::
Додайте
Signed-off-by
рядок комітером у кінці повідомлення журналу фіксації.
Значення реєстрації залежить від проекту, але воно, як правило, засвідчує, що утримувач має право подати цю роботу під тією ж ліцензією та погоджується на сертифікат для походження розробника ( для отримання додаткової інформації див. Https://developercertificate.org ).
Розгорніть документацію, що описує
--signoff
Змініть різні файли документа (чоловічої сторінки), щоб більш детально пояснити, що
--signoff
означає.На це надихнула " lwn article" Bottomley: скромна пропозиція щодо DCO " " (свідоцтво про розробник походження), де paulj зазначив:
Проблема у мене з ІКА є те , що додавання «
-s
» аргумент мерзотника зробити на самому ділі не означає , що ви навіть НЕ чули про ІКА ( сторінка людей не має жодної згадки про будь-якому місці DCO ), ніколи не заперечують на насправді бачив.git commit
Тож як присутність "
signed-off-by
" будь-якого способу може означати, що відправник погоджується та зобов'язується до DCO? У поєднанні з фактом я бачив відповіді у списках до патчів без SOB, які не говорять ні про що, як тільки "Повторити це,signed-off-by
щоб я можу це зробити".Розширення документації git полегшить стверджувати, що розробники розуміли,
--signoff
коли вони її використовують.
Зауважте, що цей випуск зараз доступний (для Git 2.15.x / 2.16, Q1 2018) git pull
.
Див. Команду 3a4d2c7 (12 жовтня 2017 р.) У. Тревора Кінга ( wking
) .
(Об’єднав Хуніо С Хамано - gitster
- в комітеті fb4cd88 , 06 листопада 2017 р.)
pull
: перехід--signoff/--no-signoff
до "git merge
"злиття може зайняти
--signoff
, але без тягнення, що проходить--signoff
вниз, користуватися незручно; дозволити "pull
" взяти варіант і передати його.
На це питання є кілька приємних відповідей. Я спробую додати більш широку відповідь, а саме про те, про які подібні лінії / заголовки / причепи йдеться в сучасній практиці. Зокрема, не стільки щодо заголовка виходу (це не єдиний).
Заголовки чи трейлери (↑ 1), такі як "вихід" (↑ 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>
На додаток до трейлера "Виходу" у вищезазначеному, є:
Інші проекти, як, наприклад, Герріт, мають для них власні заголовки та пов'язане значення.
Дивіться: https://git.wiki.kernel.org/index.php/CommitMessageConventions
Моє враження, що, хоча початковою мотивацією до конкретних метаданих були деякі юридичні питання (судячи з інших відповідей), практика таких метаданих вийшла за рамки просто розгляду справи щодо формування ланцюжка авторства.
[↑ 1]: man git-interpret-trailers
[↑ 2]: Це також іноді називають «рида» (ініціали), схоже.
Signed-off-by:
рядкам повідомлень фіксації проектом ядра Linux (та самим проектом Git). Однак для інших проектів такі рядки є безглуздими, якщо проект не призначає їм значення (наприклад, описуючи їх в документації проекту; наприклад, Linux SubmittingPatches або Git's SubmittingPatches ).