Anterior: , Acima: Enviando patches   [Conteúdo][Índice]


22.10.2 Enviando uma série de patches

Single Patches

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ída send-email do pacote git, 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.

Notificando equipes

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.

Vários Patches

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]