Qual é o recurso de desligamento no git?

Qual é o ponto da função de saída no git ?

 git commit --signoff 

Quando devo usá-lo, se em tudo?

400
26 дек. Clark Gaebel set em 26 de dezembro 2009-12-26 01:30 '09 às 1:30 am 2009-12-26 01:30
@ 4 respostas

Extrair é um requisito para obter correções no kernel do Linux e em vários outros projetos, mas a maioria dos projetos não o utiliza.

Este foi introduzido após o processo da SCO , (e outras acusações de violação de direitos autorais da SCO , a maioria dos quais nunca aceitou no tribunal), como o Certificado de Origem dos desenvolvedores . Ele é usado para dizer que você confirma que criou a correção ou que confirma que, até onde você sabe, ela foi criada sob uma licença de código aberto correspondente ou que foi fornecida a você por outra pessoa sob essas condições. Isso pode ajudar a criar uma cadeia de pessoas que assumem a responsabilidade pelo status dos direitos autorais deste código para garantir que o código de direitos autorais não liberado sob a licença de software livre (código aberto) não esteja incluído no kernel.

392
26 дек. A resposta é dada por Brian Campbell 26 dez. 2009-12-26 01:39 '09 às 1:39 2009-12-26 01:39

A saída é a string no final da mensagem de confirmação, que identifica quem é o autor do commit. Seu principal objetivo é melhorar o rastreamento de quem fez o quê, especialmente com correções.

Exemplo:

 Made an update to xyz. Signed-off-by: Super Developer <super.dev@gmail.com> 

Ele deve conter um nome de usuário real se for usado para um projeto de código aberto.

border=0

Se um desenvolvedor da filial precisar modificar alguns patches para mesclá-los, ele poderá solicitar que o remetente repita, mas isso será contraproducente. Ele pode corrigir o código e colocá-lo no final para que o autor ainda receba um empréstimo para o patch e não para os erros inseridos.

 Made an update to xyz. Signed-off-by: Super Developer <super.dev@gmail.com> [uber.dev@gmail.com: renamed methods according to naming conventions.] Signed-off-by: Uber Developer <uber.dev@gmail.com> 

Fonte: http://gerrit.googlecode.com/svn/documentation/2.0/user-signedoffby.html

45
26 дек. Hoto respondeu 26 de dezembro 2012-12-26 20:36 '12 em 8:36 pm 2012-12-26 20:36

git 2.7.1 (fevereiro de 2016) explica que em commit b2c150d (5 de janeiro de 2016) David A. Wheeler ( david-a-wheeler ) .
(combinado por Junio ​​C Hamano - gitster - em commit 7aae9ba , 5 de fevereiro de 2016

git commit página do man git commit agora inclui:

 -s:: --signoff:: 

Inclua a linha Signed-off-by assinada do Signed-off-by no final da mensagem de log de confirmação.
O valor de aprovação depende do projeto, mas geralmente confirma que o committer tem o direito de enviar este trabalho sob uma licença e concorda com o certificado de desenvolvedor de origem (consulte http://developercertificate.org/ para obter mais informações).


Expandir a documentação que descreve --signoff

Modifique os vários documentos (man pages) para explicar mais detalhadamente o que significa - --signoff .

Isto foi inspirado no " artigo da videira" Bottomley: uma proposta modesta para o DCO " (Origin Developer Certificate), onde Paul

O problema com o DCO é que adicionar um argumento << 27> para git commit não significa que você ouviu falar de DCO ( t22> man não menciona DCO em nenhum lugar ), não importa o que você veja.

Então, como a presença de " Signed-off-by " de alguma forma implica que o remetente concorda e transmite o DCO? Em conjunto com o fato, eu vi as respostas para as listas nos patches sem o SOB, que dizem não mais do que "Enviar usando o Signed-off-by para que eu possa fazer isso".

Estender a documentação do git simplificará a afirmação de que os desenvolvedores entendem --signoff quando a usam.


Por favor, note que esta mensagem é agora (para git 2.15.x / 2.16, Q1 2018) disponível para git pull .

Veja cometer 3a4d2c7 (12 de outubro de 2017) W. Trevor King ( wking ) .
(a fusão da Junio ​​S Hamano - gitster - em commit fb4cd88 , 06 de novembro de 2017

pull : pass --signoff/--no-signoff para " git merge "

mesclagem pode tomar --signoff , mas sem puxar para baixo --signoff é inconveniente de usar; permitir ' pull ' para pegar a opção e passá-la.

21
06 февр. A resposta é dada VonC 06 fev. 2016-02-06 09:22 '16 às 9:22 AM 2016-02-06 09:22

Existem algumas boas respostas para esta questão. Eu tento adicionar outra resposta ampla, ou seja, quais são os tipos de linhas / cabeçalhos / trailers na prática moderna. Não muito no título (não é o único).

Cabeçalhos ou trailers (↑ 1), como "shutdown" (shut 2), na prática atual em projetos como Git e Linux, são metadados efetivamente estruturados para commit. Todos eles são adicionados ao final da mensagem de confirmação, após a parte "livre" (não estruturada) do corpo da mensagem. Estes são pares de token (ou valor de chave), que são geralmente limitados a dois pontos e um espaço ( :␣ ).

Como mencionei, “shutdown” não é o único trailer na prática atual. Veja por exemplo este commit , que está associado com "Dirty Cow":

  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> 

Além do trailer de assinatura no exemplo acima, existem:

  • "Cc" (foi notificado do patch)
  • "Acked-by" (confirmado pelo dono do código, "parece bom para mim")
  • "Verificado" (visto)
  • "Enviado e verificado" (supostamente e verificado o problema (eu acho))

Outros projetos, como, por exemplo, Gerrit, têm seus próprios títulos e significados associados.

Veja: https://git.wiki.kernel.org/index.php/CommitMessageConventions

Moral da história

Fiquei com a impressão de que, embora a motivação inicial para esses metadados específicos fosse algumas questões legais (a julgar por outras respostas), a prática de tais metadados progrediu em relação ao caso da formação da cadeia do autor.

[↑ 1]: man git-interpret-trailers
[↑ 2]: Eles também são chamados de "soluço" (iniciais).

3
15 дек. A resposta é dada por Guildenstern 15 de dezembro 2016-12-15 16:06 '16 às 16:06 2016-12-15 16:06

Outras questões sobre tags ou Ask a Question