Anterior: Configurando o Git, Acima: Enviando patches [Conteúdo][Índice]
O comando git send-email
é a melhor maneira de enviar patches
únicos e séries de patches (veja Vários Patches) para a lista de
discussão do Guix. Enviar patches como anexos de e-mail pode dificultar sua
revisão em alguns clientes de e-mail, e git diff
não armazena
metadados de commit.
Nota: O comando
git send-email
é fornecido pela saídasend-email
do pacotegit
, ou seja,git:send-email
.
O comando a seguir criará um e-mail de patch a partir do último commit, abrirá no seu EDITOR ou VISUAL para edição e o enviará para a lista de discussão do Guix para ser revisado e mesclado. Supondo que você já tenha configurado o Git de acordo com Veja Configurando o Git, você pode simplesmente usar:
$ git send-email --annotate -1
Tip: Para adicionar um prefixo ao assunto do seu patch, você pode usar a opção --subject-prefix. O projeto Guix usa isso para especificar que o patch é destinado a um branch ou repositório diferente do branch
master
do https://git.savannah.gnu.org/cgit/guix.git.git send-email --annotate --subject-prefix='PATCH core-updates' -1
O e-mail do patch contém uma linha separadora de três traços após a mensagem de commit. Você pode “anotar” o patch com texto explicativo adicionando-o abaixo desta linha. Se não quiser anotar o e-mail, você pode remover a opção --annotate.
Se você precisar enviar um patch revisado, não o reenvie dessa forma ou
envie um patch “fix” para ser aplicado sobre o último; em vez disso, use
git commit --amend
ou git
rebase
para modificar o commit e use o endereço
NÚMERO_DE_ISSÃO@debbugs.gnu.org e o sinalizador -v
com git send-email
.
$ git commit --amend $ git send-email --annotate -vREVISÃO \ --to=NÚMERO_DE_ISSÃO@debbugs.gnu.org -1
Nota: Devido a um bug aparente em
git send-email
, -v REVISÃO (com o espaço) não funcionará; você deve usar -vREVISÃO.
Você pode descobrir NÚMERO_DE_ISSÃO pesquisando na interface do mumi em https://issues.guix.gnu.org pelo nome do seu patch ou lendo o e-mail de confirmação enviado automaticamente pelo Debbugs em resposta a bugs e patches recebidos, que contém o número do bug.
Se o seu git checkout tiver sido configurado corretamente
(veja Configurando o Git), o comando git send-email
notificará
automaticamente os membros apropriados da equipe, com base no escopo das
suas alterações. Isso depende do script etc/teams.scm, que também
pode ser invocado manualmente se você não usar o comando git
send-email
preferencial para enviar patches. Para listar as ações
disponíveis do script, você pode invocá-lo por meio do comando
etc/teams.scm help
. Para obter mais informações sobre equipes,
veja Equipes.
Nota: Em distros estrangeiras, talvez seja necessário usar
./pre-inst-env git send-email
para que etc/teams.scm funcione.
Embora git send-email
sozinho seja suficiente para um único patch,
uma falha infeliz no Debbugs significa que você precisa ter mais cuidado ao
enviar vários patches: se você enviá-los todos para o endereço
guix-patches@gnu.org, um novo problema será criado para cada patch!
Ao enviar uma série de patches, é melhor enviar uma “carta de
apresentação” do Git primeiro, para dar aos revisores uma visão geral da
série de patches. Podemos criar um diretório chamado outgoing
contendo nossa série de patches e uma carta de apresentação chamada
0000-cover-letter.patch com git format-patch
.
$ git format-patch -NUMBER_COMMITS -o outgoing \ --cover-letter --base=auto
Agora podemos enviar apenas a carta de apresentação para o endereço guix-patches@gnu.org, o que criará um problema para o qual podemos enviar o restante dos patches.
$ git send-email outgoing/0000-cover-letter.patch --annotate $ rm outgoing/0000-cover-letter.patch # we don't want to resend it!
Certifique-se de editar o e-mail para adicionar uma linha de assunto e um resumo apropriados antes de enviá-lo. Observe o shortlog e o diffstat gerados automaticamente abaixo do resumo.
Depois que o remetente do Debbugs responder ao seu e-mail de carta de apresentação, você poderá enviar os patches reais para o endereço do problema recém-criado.
$ git send-email outgoing/*.patch --to=NÚMERO_DE_ISSÃO@debbugs.gnu.org $ rm -rf outgoing # we don't need these anymore
Felizmente, essa dança git format-patch
não é necessária para
enviar uma série de patches corrigida, pois já existe um problema para o
conjunto de patches.
$ git send-email -NÚMERO_COMMITS -vREVISÃO \ --to=NÚMERO_DE_ISSÃO@debbugs.gnu.org
Se necessário, você pode usar --cover-letter --annotate para enviar outra carta de apresentação, por exemplo, para explicar o que mudou desde a última revisão e se essas mudanças são necessárias.
Anterior: Configurando o Git, Acima: Enviando patches [Conteúdo][Índice]