Git
Português (Brasil) ▾ Topics ▾ Latest version ▾ git-send-email last updated in 2.33.0

NOME

git-send-email - Envia uma coleção de patches como e-mails

RESUMO

git send-email [<opções>] <arquivo|diretório|rev-list opções>…​
git send-email --dump-aliases

DESCRIÇÃO

Toma as correções informadas na linha de comando e as envia por e-mail. Os patches podem ser utilizados como arquivos, diretórios (que enviarão todos os arquivos no diretório) ou diretamente como uma lista de revisão. No último caso, qualquer formato aceito pelo git-format-patch[1] pode ser passado para o git-send-email.

O cabeçalho do e-mail é configurável através das opções da linha de comando. Se não utilizado na linha de comandos, o usuário será solicitado a informar uma interface ativada para o ReadLine que forneça as informações que forem necessárias.

Existem dois formatos aceitos para os arquivos patch:

  1. arquivos no formato mbox

    Isto é o que o git-format-patch[1] gera. Grande parte dos cabeçalhos e a formatação MIME são ignorados.

  2. O formato original utilizado pelo script send_lots_of_email.pl feito pelo Greg Kroah-Hartman’s

    Este formato espera que a primeira linha do arquivo tenha o valor "Cc:" e o "Assunto:" da mensagem como a segunda linha.

OPÇÕES

Composição

--annotate

Revise e edite cada patch que você está prestes a enviar. O padrão é o valor de sendemail.annotate. Consulte a seção CONFIGURAÇÃO de sendemail.multiEdit.

--bcc=<endereço>,…​

Especifique um valor "Cco:" para cada e-mail. A predefinição é o valor do sendemail.bcc.

Esta opção pode ser utilizada várias vezes.

--cc=<endereço>,…​

Especifique um valor inicial "Cc:" para cada e-mail. A predefinição é o valor do sendemail.cc.

Esta opção pode ser utilizada várias vezes.

--compose

Invoque um editor de texto (consulte GIT_EDITOR no git-var[1]) para editar uma mensagem introdutória para a série de patches.

Quando a opção --compose é utilizada, o git send-email utilizará os cabeçalhos From (De), Subject (Assunto), and In-Reply-To (Em resposta a) definidos na mensagem. Caso o corpo da mensagem (a parte onde você digita após os cabeçalhos e uma linha em branco) contenha apenas linhas em branco (ou Git: prefixadas), o resumo não será enviado, porém os cabeçalhos "De", "Assunto" e "Em resposta a" serão utilizados, a menos que sejam removidos.

Os cabeçalhos ausentes "From" ou "In-Reply-To" (em resposta a) serão solicitados.

Consulte a seção CONFIGURAÇÃO para a opção de configuração sendemail.multiEdit.

--from=<endereço>

Especifique o destinatário dos e-mails. Caso não seja definido na linha de comando, o valor da opção de configuração sendemail.from é utilizado. Caso nem a opção da linha de comando nem a opção de configuração sendemail.from estejam definidos, então o usuário será avisado para informar o valor. O valor predefinido para o prompt será o valor do GIT_AUTHOR_IDENT ou GIT_COMMITTER_IDENT caso isso não esteja definido, conforme retornado pelo git var -l.

--reply-to=<endereço>

Define o endereço para onde as respostas dos destinatários devem ir. Use isso se as respostas às mensagens forem para outro endereço além do especificado com o parâmetro --from.

--in-reply-to=<identificador>

Faça o primeiro e-mail (ou todos os e-mails com --no-thread) aparecer como uma resposta ao ID da mensagem informada, o que evita as quebras dos encadeamentos provendo uma nova série de patches. O segundo e-mail e os seguintes serão enviados como resposta de acordo com a configuração --[no-]chain-reply-to.

Assim, por exemplo, quando --thread e --no-chain-reply-to sejam utilizados, o segundo e os patches subsequentes serão as respostas para o primeiro, como na ilustração abaixo, onde [PATCH v2 0/3] está como resposta para [PATCH 0/2]:

[PATCH 0/2] Aqui está o que eu fiz...
  [PATCH 1/2] Limpeza e testes
  [PATCH 2/2] Implementação
  [PATCH v2 0/3] Aqui está uma nova rolagem
    [PATCH v2 1/3] Limpar
    [PATCH v2 2/3] Novos testes
    [PATCH v2 3/3] Implementação

Somente é necessário caso --compose seja definido. Caso --compose não seja definido, será solicitado ao usuário para informar um.

--subject=<texto>

Informe o assunto inicial do encadeamento do e-mail. Somente é necessário caso --compose seja definido. Caso --compose não seja definido, será solicitado ao usuário para informar um.

--to=<endereço>,…​

Define o destinatário principal dos e-mails que forem gerados. Em geral, este será o mantenedor "upstream" do projeto envolvido. A predefinição é o valor da opção de configuração sendemail.transferEncoding; caso isso não seja definido, a predefinição retorna para auto.

Esta opção pode ser utilizada várias vezes.

--8bit-encoding=<codificação>

Quando encontrar uma mensagem não ASCII ou um assunto que não declare a sua codificação, adicione os cabeçalhos/citações para indicar que estão codificados com <codificação>. A predefinição é o valor do sendemail.assume8bitEncoding; caso não esteja definido, o usuário será questionado caso qualquer arquivo não ASCII seja encontrado.

Observe que nenhuma tentativa é feita para validar a codificação.

--compose-encoding=<codificação>

Define a codificação da mensagem que será escrita. A predefinição é o valor da opção de configuração sendemail.composeencoding; caso não esteja definido, assume-se o UTF-8.

--transfer-encoding=(7bit|8bit|quoted-printable|base64|auto)

Define a codificação da transferência que será utilizada para enviar a mensagem através do SMTP. O 7bit falhará caso encontre uma mensagem não ASCII. a citação para impressão pode ser útil quando o repositório contém arquivos que contenham retornos de carro, porém dificulta muito a inspeção manual do arquivo de e-mail do patch bruto (com é gravado através de um MUA). a base64 é ainda mais à prova de idiotas, porém também é ainda mais estúpido. auto utilizará 8bit quando for possível e, caso contrário, será citado para impressão.

A predefinição é o valor da configuração sendemail.transferEncoding; caso isso não seja definido, a predefinição retorna para auto.

--xmailer
--no-xmailer

Adicione (ou evite adicionar) o cabeçalho "X-Mailer:". A predefinição é que o cabeçalho seja adicionado, porém pode ser desligado redefinindo a variável de configuração sendemail.xmailer como false.

Enviando

--envelope-sender=<endereço>

Define o envelope do remetente utilizado para enviar os e-mails. É útil caso o seu endereço predefinido não seja o endereço registrado em uma lista. Para usar o endereço De, defina o valor para "auto". Caso utilize o binário do sendmail, você deverá ter privilégios adequados para poder utilizar o parâmetro -f. A predefinição é o valor da variável de configuração sendemail.envelopeSender; caso não esteja definido, a escolha do envelope do remetente é deixada para o seu MTA.

--smtp-encryption=<criptografia>

Define a criptografia que será utilizada, ssl ou tls. Qualquer outro valor é revertido para o SMTP simples. A predefinição é o valor da opção de configuração sendemail.smtpEncryption.

--smtp-domain=<FQDN>

Define o Nome de Domínio Totalmente Qualificado (FQDN) utilizado no comando HELO/EHLO para o servidor SMTP. Alguns servidores exigem que o FQDN corresponda ao seu endereço de IP. Caso não esteja definido, o comando git send-email tenta determinar o seu FQDN de forma automática. A predefinição é o valor da opção de configuração sendemail.smtpDomain.

--smtp-auth=<mecanismos>

Mecanismos SMTP-AUTH permitidos, listas separadas por um espaço. Está configuração impõem a utilização dos mecanismos listados. Exemplo:

$ git send-email --smtp-auth="PLAIN LOGIN GSSAPI" ...

Caso pelo menos um dos mecanismos definidos coincidir com os anunciados através do servidor SMTP e caso seja compatível pela biblioteca SASL utilizada, o mecanismo será utilizado para a autenticação. Caso nem a opção de configuração sendemail.smtpAuth nem a opção --smtp-auth forem utilizados, todos os mecanismos compatíveis através da biblioteca SASL poderão ser utilizados. O valor especial none pode ser informado para desativar completamente a autenticação, independentemente da opção --smtp-user

--smtp-pass[=<senha>]

A senha para o SMTP-AUTH. O argumento é opcional: Caso nenhum argumento seja definido, então um valor vazio é utilizado como uma senha. A predefinição é o valor da opção de configuração sendemail.smtpPass, no entanto, a opção --smtp-pass sempre substitui este valor.

Além disso, as senhas não precisam ser definidas nos arquivos de configuração ou na linha de comando. Caso um nome de usuário seja definido (com --smtp-user ou` sendemail.smtpUser), porém nenhuma senha seja definida (com --smtp-pass ou sendemail.smtpPass), uma senha é obtida utilizando o comando git-credential.

--no-smtp-auth

Desative a autenticação SMTP. É um atalho para --smtp-auth=none

--smtp-server=<host>

Caso seja definido, define qual o servidor SMTP deve ser utilizado (como por exemplo, um domínio smtp.example.com ou um endereço IP). Como alternativa, é possível definir um nome do caminho completo de um programa semelhante ao sendmail; o programa deve ser compatível com a opção -i. O valor predefinido pode ser definido através da opção de configuração sendemail.smtpServer; a predefinição interna é procurar pelo sendmail em /usr/sbin, /usr/lib e $PATH caso este programa esteja disponível, caso contrário retorna ao localhost.

--smtp-server-port=<porta>

Define uma porta diferente da porta predefinida (os servidores SMTP normalmente ouvem na porta 25 smtp, porém também podem ouvir na porta de envio ou a porta smtp SSL comum 465); os nomes das portas simbólicos (como, por exemplo, "submission" em vez do 587) também são aceitos. A porta também pode ser definida com a variável de configuração sendemail.smtpServerPort.

--smtp-server-option=<opção>

Caso seja definido, define qual a opção da saída que será usada pelo servidor SMTP. O valor predefinido pode ser definido pela opção de configuração sendemail.smtpServerOption.

A opção --smtp-server-option deve ser repetida para cada opção que você queira passar para o servidor. Da mesma forma, as linhas diferentes nos arquivos de configuração devem ser utilizadas para cada opção.

--smtp-ssl

Legado para o pseudônimo --smtp-encryption ssl.

--smtp-ssl-cert-path

O caminho para um armazenamento dos certificados CA confiáveis para a validação do certificado SMTP SSL/TLS (um diretório que foi processado pelo c_rehash ou um único arquivo contendo um ou mais certificados no formato PEM concatenados juntos: consulte verify(1) -CAfile e -CApath para mais informações sobre eles). Defina-o como um texto vazio para desativar a verificação do certificado. A predefinição retorna para o valor da variável de configuração sendemail.smtpsslcertpath, caso seja definida, ou tenha a biblioteca de apoio SSL tenha sido compilada (o que deve ser a melhor opção na maioria das plataformas).

--smtp-user=<usuário>

O nome do usuário para o SMTP-AUTH. A predefinição é o valor da opção de configuração sendemail.smtpUser; caso um nome de usuário não tenha sido definido(com --smtp-user ou sendemail.smtpUser), a tentativa de autenticação não será realizada.

--smtp-debug=0|1

Ative (1) ou desative (0) a geração da depuração. Se ativado, os comandos e respostas SMTP serão impressos. Útil para depurar problemas de conexão e a autenticação TLS.

--batch-size=<num>

Alguns servidores de e-mail (smtp.163.com por exemplo) limitam a quantidade de e-mails que podem ser enviados por sessão (conexão) e isso causa uma falha no envio de muitas mensagens. Com esta opção, o "send-email" será desconectado após enviar a quantidade de $<num> mensagens e aguardará alguns segundos (consulte --relogin-delay) e fará a reconexão para contornar esse limite. É possível utilizar alguma forma de auxiliar a credencial evitando a necessidade de redigitar a sua senha sempre que isso acontecer. A predefinição retorna para o valor da variável de configuração sendemail.smtpBatchSize.

--relogin-delay=<int>

Aguardando $<int> segundos antes de se reconectar ao servidor SMTP. Utilizado em conjunto com a opção --batch-size. A predefinição retorna para o valor da variável de configuração sendemail.smtpReloginDelay.

Automatizando

--no-[to|cc|bcc]

Limpa qualquer lista dos endereços "Para:", "Cc:", "Cco:" definidos anteriormente através da config.

--no-identity

Limpa o valor lido anteriormente do sendemail.identity definido através da config, caso exista.

--to-cmd=<comando>

Define um comando que será executado um por vez no arquivo patch que deve gerar as entradas "Para:". A saída deste comando deve ser um endereço de e-mail único por linha. A predefinição é o valor da opção de configuração sendemail.tocmd.

--cc-cmd=<comando>

Define um comando que será executado um por vez no arquivo patch que deve gerar as entradas "Cc:". A saída deste comando deve ser um endereço de e-mail único por linha. A predefinição é o valor da opção de configuração sendemail.ccCmd.

--[no-]chain-reply-to

Caso esteja definido, cada e-mail será enviado como uma resposta ao e-mail enviado anteriormente. Caso esteja desativado com a opção "--no-chain-reply-to", todos os e-mails posteriores ao primeiro, serão enviados como respostas para o primeiro e-mail enviado. Ao utilizar isso, é recomendável que o primeiro arquivo utilizado seja uma visão geral de toda a série de patches. É predefinido que esteja desativada, porém a variável de configuração sendemail.chainReplyTo pode ser utilizada para ativá-la.

--identity=<identidade>

Uma identidade de configuração. Quando informado, faz com que os valores na subseção sendemail.<identidade> tenham precedência sobre os valores na seção sendemail. A identidade predefinida é o valor existente em sendemail.identity.

--[no-]signed-off-by-cc

Caso esteja definido, adicione os e-mails encontrados nas linhas Signed-off-by: ou Cc: à lista cc. A predefinição é o valor da opção de configuração sendemail.signedoffbycc; caso não seja definido, a predefinição retorna para --signed-off-by-cc.

--[no-]cc-cover

Caso seja definido, os emails encontrados nos cabeçalhos Cc: no primeiro patch da série (normalmente a carta de apresentação) serão adicionados à lista Cc: de cada conjunto de e-mails. Default is the value of sendemail.cccover configuration value; if that is unspecified, default to --no-cc-cover.

--[no-]to-cover

Caso seja definido, os emails encontrados nos cabeçalhos To: (Para) no primeiro patch da série (normalmente a carta de apresentação) serão adicionados à lista To: de cada conjunto de e-mails. Default is the value of sendemail.tocover configuration value; if that is unspecified, default to --no-to-cover.

--suppress-cc=<categoria>

Define uma categoria adicional dos destinatários para suprimir o auto-cc do:

  • author irá evitar a inclusão o autor do patch.

  • self evitará incluir o remetente.

  • cc irá evitar a inclusão de qualquer pessoa mencionada nas linhas Cc no cabeçalho do patch, exceto self (utilize self para isso).

  • bodycc irá evitar a inclusão de qualquer pessoa mencionada nas linhas Cc no corpo do patch (mensagem do commit), exceto o self (utilize self para isso).

  • O sob evitará incluir qualquer pessoa mencionada nas linhas assinadas, exceto self (utilize self para isso).

  • O misc-by evitará incluir qualquer pessoa mencionada nas linhas Acked-by (Reconhecido-por), Review-by (Revisado-por), Tested-by (Testado-por) e outras linhas "by-by" no corpo do patch, exceto o Signed-off-by (Assinado-por) (utilize sob para tanto).

  • cccmd evitará executar o --cc-cmd.

  • body é o equivalente a sob + bodycc + misc-by.

  • all irá suprimir todos os valores cc de maneira automática.

A predefinição é o valor da configuração sendemail.suppresscc; caso isso não seja definido, a predefinição será self caso --suppress-from seja utilizado, bem como body caso --no-selected-off-cc seja utilizado.

--[no-]suppress-from

Caso esteja definido, não adicione o endereço From: à lista cc:. A predefinição é o valor da opção de configuração sendemail.suppressFrom; caso não seja definido, a predefinição retorna para --no-suppress-from.

--[no-]thread

Caso esteja definido, os cabeçalhos In-Reply-To e as Referências serão adicionadas em cada e-mail enviado. Se cada e-mail se refere ao e-mail anterior (deep encadeado por git format-patch) ou ao primeiro e-mail (encadeamento shallow) é governado por "--[no-]chain-reply-to".

Caso seja desativado com a opção "--no-thread", estes cabeçalhos não serão adicionados (a menos que seja especificado com a opção --in-reply-to). A predefinição é o valor da opção de configuração sendemail.thread; caso não esteja definido, a predefinição retorna para --thread.

É responsabilidade do usuário garantir que já não exista um cabeçalho In-Reply-To quando o comando git send-email for solicitado para adicioná-lo (em especial, observe que o comando git format-patch pode ser configurado para realizar o encadeamento ele mesmo). Não fazer isso pode não produzir o resultado desejado no MUA do destinatário.

Administrando

--confirm=<modo>

Apenas confirme antes de enviar:

  • always sempre pedirá confirmação antes do envio

  • O never nunca irá confirmar antes do envio

  • cc irá pedir uma confirmação antes do envio quando o "send-email" tiver adicionado de forma automática os endereços do patch à lista Cc

  • compose (compor) irá confirmar antes de enviar a primeira mensagem ao utilizar o --compose.

  • auto é o equivalente a cc + compose (compor)

A predefinição é o valor da configuração sendemail.confirm; caso isso não seja definido, utilize a predefinição auto, a menos que alguma das opções da supressão tenha sido utilizada; nesse caso, a predefinição será compose.

--dry-run

Faça tudo, exceto realmente enviar os e-mails.

--[no-]format-patch

Quando um argumento pode ser entendido como uma referência ou como um nome do arquivo, entenda-o como um argumento do formato do patch (--format-patch) ou como um nome de arquivo (--no-format-patch ) É predefinido que quando este conflito ocorra, o git send-email seja encerrado.

--quiet

Torne o comando git-send-email menos detalhado. Deve ser gerado apenas uma linha por e-mail.

--[no-]validate

Realize verificações de sanidade nos patches. Atualmente, a validação significa o seguinte:

  • Se presente, chame o gancho de validação do sendmail (consulte githooks[5]).

  • Aviso dos patches que contenham linhas mais longas que 998 caracteres, a menos que uma codificação de transferência adequada (auto, base64, ou quoted-printable) seja utilizada; isso se deve as limitações do SMTP descritos em http://www.ietf.org/rfc/rfc5322.txt.

A predefinição é o valor do sendemail.validate; caso já não estiver definido, a predefinição retorna para --validate.

--force

Envie os e-mails mesmo que as verificações de segurança as impeçam.

Informação

--dump-aliases

Em vez da operação normal, despeje os nomes dos pseudônimos dos atalhos vindo do arquivo de configuração de pseudônimos, um por linha e em ordem alfabética. Observe que isso inclui apenas o pseudônimo e não os seus endereços de e-mail que foram expandidos. Para obter mais informações sobre pseudônimos, consulte sendemail.aliasesfile.

CONFIGURAÇÃO

sendemail.aliasesFile

Para evitar a digitação dos longos endereços de e-mail, aponte para um ou mais arquivos aliases do e-mail. Você também deve informar o sendemail.aliasFileType.

sendemail.aliasFileType

Formato do(s) arquivo(s) definidos(s) em sendemail.aliasesFile. Deve ser mutt, mailrc, pine, elm, gnus ou sendmail.

A aparência de um arquivo alias em cada formato pode ser encontrada na documentação do programa do e-mail com o mesmo nome. As diferenças e as limitações dos formatos predefinidas são descritas abaixo:

sendmail
  • Os aliases e os endereços citados não são compatíveis: linhas que contenham o símbolo " são ignorados.

  • O redirecionamento para um arquivo (/nome/do/caminho) ou pipe (|comando) não é suportado.

  • A inclusão dos arquivos (:include: /path/nome) não é suportada.

  • Os avisos são impressos na saída de erro predefinido para qualquer construções explicitamente não suportadas e quaisquer outras linhas que não sejam reconhecidas pelo analisador.

sendemail.multiEdit

Caso o valor seja true (predefinido), uma única instância do editor será gerada para editar os arquivos que precisam ser editados (os patches quando --annotate é utilizado e o resumo quando --compose é utilizado). Caso o valor seja false, os arquivos serão editados um após o outro, onde um novo editor é aberto a cada vez.

sendemail.confirm

Define a predefinição para confirmar antes do envio. Deve ser um de always (sempre), never (nunca), cc (com cópia), compose (compor) ou auto. Consulte --confirm na seção anterior para obter o significado destes valores.

EXEMPLOS

Utilize o gmail como servidor smtp

Para usar o git send-email para enviar os seus patches através do servidor SMTP do GMail, edite ~/.gitconfig para definir as configurações da sua conta:

[sendemail]
	smtpEncryption = tls
	smtpServer = smtp.gmail.com
	smtpUser = yourname@gmail.com
	smtpServerPort = 587

Caso tenha uma configuração de autenticação de dois fatores na sua conta do Gmail, será necessário gerar uma senha específica do aplicativo para ser possível utilizar com o comando git send-email. Visite https://security.google.com/settings/security/apppasswords para criá-la.

Quando os seus commits estiverem prontos para serem enviadas para a lista de discussão, execute os seguintes comandos:

$ git format-patch --cover-letter -M origin/master -o outgoing/
$ edit outgoing/0000-*
$ git send-email outgoing/*

As suas credenciais serão solicitadas na primeira vez em que você executá-lo. Entre com as credenciais específicas do aplicativo ou a sua senha normal conforme for o caso. Caso tenha o auxiliar de credencial configurado (consulte git-credential[1]), a senha será salva no armazenamento de credenciais para que você não precise digitá-la na próxima vez.

Observação: os seguintes módulos Perl talvez já estejam instalados com a sua distribuição Perl, caso contrário, estes módulos são necessários: MIME::Base64, MIME::QuotedPrint, Net::Domain e Net::SMTP. Estes módulos Perl também são necessários: Authen::SASL and Mail::Address.

VEJA TAMBÉM

GIT

Parte do conjunto git[1]