Setup and Config
Getting and Creating Projects
Basic Snapshotting
Branching and Merging
Sharing and Updating Projects
Inspection and Comparison
Patching
Debugging
External Systems
Server Admin
- 2.45.1 → 2.45.2 no changes
- 2.45.0 04/29/24
- 2.44.1 → 2.44.2 no changes
- 2.44.0 02/23/24
- 2.43.2 → 2.43.5 no changes
- 2.43.1 02/09/24
- 2.43.0 11/20/23
- 2.41.1 → 2.42.3 no changes
- 2.41.0 06/01/23
- 2.39.1 → 2.40.3 no changes
- 2.39.0 12/12/22
- 2.38.1 → 2.38.5 no changes
- 2.38.0 10/02/22
- 2.35.1 → 2.37.7 no changes
- 2.35.0 01/24/22
- 2.33.1 → 2.34.8 no changes
- 2.33.0 08/16/21
- 2.30.2 → 2.32.7 no changes
- 2.30.1 02/08/21
- 2.30.0 12/27/20
- 2.24.1 → 2.29.3 no changes
- 2.24.0 11/04/19
- 2.23.1 → 2.23.4 no changes
- 2.23.0 08/16/19
- 2.22.2 → 2.22.5 no changes
- 2.22.1 08/11/19
- 2.21.1 → 2.22.0 no changes
- 2.21.0 02/24/19
- 2.20.1 → 2.20.5 no changes
- 2.20.0 12/09/18
- 2.19.1 → 2.19.6 no changes
- 2.19.0 09/10/18
- 2.18.1 → 2.18.5 no changes
- 2.18.0 06/21/18
- 2.17.1 → 2.17.6 no changes
- 2.17.0 04/02/18
- 2.16.6 12/06/19
- 2.15.4 no changes
- 2.14.6 12/06/19
- 2.13.7 no changes
- 2.12.5 09/22/17
- 2.10.5 → 2.11.4 no changes
- 2.9.5 07/30/17
- 2.8.6 no changes
- 2.7.6 07/30/17
- 2.6.7 05/05/17
- 2.5.6 05/05/17
- 2.4.12 05/05/17
- 2.3.10 09/28/15
- 2.2.3 no changes
- 2.1.4 12/17/14
- 2.0.5 12/17/14
RESUMO
git send-email [<opções>] <file|directory>… git send-email [<opções>] <opções-do-formato-do-patch> 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, bem como as opções git-format-patch[1].
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:
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.
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
--compose
é utilizado, o git send-email utilizará os cabeçalhos From, To, Cc, Bcc, Subject, Reply-To e In-Reply-To especificados na mensagem. Se o corpo da mensagem (o que você digita após os cabeçalhos e uma linha em branco) contiver apenas linhas em branco (ou com prefixo Git:), o resumo não será enviado, mas os cabeçalhos mencionados acima serão usados, 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çãosendemail.from
estejam definidos, então o usuário será avisado para informar o valor. O valor predefinido para o prompt será o valor doGIT_AUTHOR_IDENT
ouGIT_COMMITTER_IDENT
caso isso não esteja definido, conforme retornado pelogit 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 com que o primeiro e-mail (ou todos os e-mails com
--no-thread
) apareça como uma resposta ao ID da mensagem informada, o que evita quebras dos encadeamentos provendo uma nova série dos patches. O segundo e os seguintes e-mails 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>,…
Especifique o destinatário principal dos e-mails gerados. Geralmente, esse será o mantenedor upstream do projeto envolvido. A predefinição é o valor do valor da configuração
sendemail.to
; se esse valor e--to-cmd
não for especificado, ele será solicitado.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 paraauto
.- --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
comofalse
.
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 numa 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çãosendemail.envelopeSender
; caso não esteja definido, a escolha do envelope do remetente é deixada para o seu MTA.- --sendmail-cmd=<comando>
Especifique um comando que será executado para enviar um e-mail. O comando deve ser do tipo sendmail; mais especificamente, ele deve ser compatível com a opção
-i
. Se preciso for, o comando será executado na shell. O valor predefinido é o mesmo definido pela variávelsendemail.sendmailcmd
. Se não for definido e se o comando--smtp-server
também não tenha sido usado, o comandogit-send-email
irá procurar porsendmail
em/usr/sbin
,/usr/lib
e no $PATH.- --smtp-encryption=<criptografia>
Especifique de que maneira a criptografia será iniciada na conexão SMTP. Os valores válidos são ssl e tls. Qualquer outro valor reverte para SMTP simples (não criptografado), cujo padrão é a porta 25. Apesar dos nomes, ambos os valores usarão a mesma versão mais recente do TLS, porém, têm estes nomes por motivos históricos. O ssl refere-se à criptografia "implícita" (às vezes chamada de SMTPS), que por padrão usa a porta 465. O tls refere-se à criptografia "explícita" (geralmente conhecida como STARTTLS), que por padrão usa a porta 25. Outras portas podem ser usadas pelo servidor SMTP que sejam fora do padrão. A porta alternativa comumente encontrada para o tls e não criptografada é a porta 587. É preciso verificar a documentação do seu provedor ou a configuração do seu servidor para ter certeza do seu caso específico. O padrão é o valor de
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çãosendemail.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
ousendemail.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 será utilizado (por exemplo, um domínio
smtp.example.com
ou um endereço IP). Caso não seja especificado e se o comando--sendmail-cmd
também não tenha sido usado, o padrão é procurar pelosendmail
em/usr/sbin
,/usr/lib
e $PATH caso tal programa esteja disponível, caso contrário, retorna paralocalhost
.Por questões de compatibilidade retroativa, esta opção também pode definir um caminho completo de um programa semelhante ao sendmail; o programa deve ser compatível com a opção
-i
. Este método não suporta a passagem de argumentos ou o uso do nome de comandos simples. Para estes casos, considere utilizar a opção--sendmail-cmd
.- --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 (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
ousendemail.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çãosendemail.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çãosendemail.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
.- --header-cmd=<comando>
Defina um comando que seja executado uma vez por mensagem gerada e produza linhas de cabeçalho no estilo RFC 2822 para serem inseridas nelas. Quando a variável de configuração
sendemail.headerCmd
for definida, este valor será sempre utilizado. Quando a opção --header-cmd for usada na linha de comando, o seu valor tem precedência sobre a variavel de configuraçãosendemail.headerCmd
.- --no-header-cmd
Desativa qualquer cabeçalho em uso.
- --[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 em 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
Signed-off-by
, exceto para 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 comobody
caso--no-signed-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 (encadeamentoshallow
) é 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çãosendemail.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çãoauto
, 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
Warning | Missing See original version for this content. |
Warning | Missing See original version for this content. |
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 opte pela autenticação em várias etapas configurada na sua conta do Gmail, será possível gerar uma senha específica do aplicativo para que possa ser usado com o comando git send-email. Visite o link 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-format-patch[1], git-imap-send[1], mbox(5)
GIT
Parte do conjunto git[1]