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.43.1 → 2.44.2 no changes
- 2.43.0
11/20/23
- 2.42.1 → 2.42.3 no changes
- 2.42.0
08/21/23
- 2.41.1 → 2.41.2 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.32.1 → 2.37.7 no changes
- 2.32.0
06/06/21
- 2.22.1 → 2.31.8 no changes
- 2.22.0
06/07/19
- 2.19.3 → 2.21.4 no changes
- 2.19.2
11/21/18
- 2.19.1 no changes
- 2.19.0
09/10/18
- 2.18.1 → 2.18.5 no changes
- 2.18.0
06/21/18
- 2.17.0 → 2.17.6 no changes
- 2.16.6
12/06/19
- 2.15.4
12/06/19
- 2.14.6 no changes
- 2.13.7
05/22/18
- 2.12.5 no changes
- 2.11.4
09/22/17
- 2.10.5 no changes
- 2.9.5
07/30/17
- 2.8.6
07/30/17
- 2.7.6 no changes
- 2.6.7
05/05/17
- 2.3.10 → 2.5.6 no changes
- 2.2.3
09/04/15
RESUMO
git interpret-trailers [--in-place] [--trim-empty] [(--trailer (<chave>|<keyAlias>)[(=|:)<valor>])…] [--parse] [<arquivo>…]
DESCRIÇÃO
Adiciona ou analisa as linhas com caracteres de resposta que se assemelham aos cabeçalhos de e-mail RFC 822 no final de uma mensagem do commit. Por exemplo, na seguinte mensagem de commit
assunto Lorem ipsum dolor sit amet, consectetur adipiscing elit. Assinado-por: Alice <alice@example.com> Assinado-por: Bob <bob@example.com>
as duas últimas linhas começando com "Signed-off-by" são os "trailers".
This command reads commit messages from either the <file> arguments or the standard input if no <file> is specified. If --parse
is specified, the output consists of the parsed trailers coming from the input, without influencing them with any command line options or configuration variables.
Caso contrário, esse comando aplica as variáveis de configuração trailer.*
(que podem potencialmente adicionar novos trailers, bem como reposicioná-los), assim como quaisquer argumentos de linha de comando que possam substituir as variáveis de configuração (como --trailer=...
, que também pode adicionar novos trailers), a cada arquivo de entrada. O resultado é emitido na saída padrão.
This command can also operate on the output of git-format-patch[1], which is more elaborate than a plain commit message. Namely, such output includes a commit message (as above), a "---" divider line, and a patch part. For these inputs, the divider and patch parts are not modified by this command and are emitted as is on the output, unless --no-divider
is specified.
Algumas variáveis de configuração controlam a forma como os argumentos --trailer
são aplicados a cada entrada e a forma como qualquer trailer existente na entrada é alterado. Eles também possibilitam a adição automática de alguns trailers.
Por padrão, um argumento <key>=<valor> ou <key>:<valor> usado com --trailer
será anexado após os trailers existentes apenas se o último trailer tiver um par (<key>, <valor>) diferente (ou se não houver nenhum trailer existente). As partes <key> e <valor> serão cortadas para remover os espaços em branco iniciais e finais, o <key> e o <valor> cortados resultantes aparecerão na saída desta maneira:
key: valor
Significa que o <key> e o <valor> ajustado será separado por um ': '
(dois pontos seguido por um espaço).
Por conveniência, um <keyAlias> pode ser configurado para tornar o uso do --trailer
mais curto para ser digitado na linha de comando. Isso pode ser configurado usando a variável de configuração trailer.<keyAlias>.key. O <keyAlias> deve ser um prefixo completo de caracteres <key> , embora a distinção entre maiúsculas e minúsculas não seja importante. Por exemplo, se você tiver
trailer.sign.key "Signed-off-by: "
em sua configuração, você só precisa especificar --trailer="sign: foo"
na linha de comando em vez de --trailer="Signed-off-by: foo"
.
É predefinido que o novo trailer apareça no final de todos os trailers já existentes. Caso não haja nenhum, o novo trailer aparecerá no final. Uma linha em branco será adicionada antes do novo trailer caso já não exista um.
Existing trailers are extracted from the input by looking for a group of one or more lines that (i) is all trailers, or (ii) contains at least one Git-generated or user-configured trailer and consists of at least 25% trailers. The group must be preceded by one or more empty (or whitespace-only) lines. The group must either be at the end of the input or be the last non-whitespace lines before a line that starts with --- (followed by a space or the end of the line).
Ao ler os caracteres de resposta, não pode haver espaço em branco antes ou dentro do <key>, mas qualquer quantidade de espaço regular e de caracteres de tabulação são permitidos entre o <key> e o separador. Pode existir espaço antes, durante ou depois do <valor>. O <valor> pode ser dividido em várias linhas, com cada linha subsequente começando com pelo menos um espaço, como a "dobra" na RFC 822. Exemplo:
key: Esse é um valor muito longo, com espaços e novas linhas nele.
Observe que os trailers não seguem (nem pretendem seguir) muitas das regras dos cabeçalhos RFC 822. Por exemplo, eles não seguem a regra de codificação.
OPÇÕES
- --in-place
Edite os arquivos no local.
- --trim-empty
If the <value> part of any trailer contains only whitespace, the whole trailer will be removed from the output. This applies to existing trailers as well as new trailers.
- --trailer <key>[(=|:)<valor>]
Defina um par (<key>, <valor>) que deve ser aplicado como um caractere de resposta nas mensagens de entrada. Consulte a descrição deste comando.
- --where <arranjo>
- --no-where
Specify where all new trailers will be added. A setting provided with --where overrides the
trailer.where
and any applicabletrailer.<keyAlias>.where
configuration variables and applies to all --trailer options until the next occurrence of --where or --no-where. Upon encountering --no-where, clear the effect of any previous use of --where, such that the relevant configuration variables are no longer overridden. Possible placements areafter
,before
,end
orstart
.- --if-exists <ação>
- --no-if-exists
Specify what action will be performed when there is already at least one trailer with the same <key> in the input. A setting provided with --if-exists overrides the
trailer.ifExists
and any applicabletrailer.<keyAlias>.ifExists
configuration variables and applies to all --trailer options until the next occurrence of --if-exists or --no-if-exists. Upon encountering '--no-if-exists, clear the effect of any previous use of '--if-exists, such that the relevant configuration variables are no longer overridden. Possible actions areaddIfDifferent
,addIfDifferentNeighbor
,add
,replace
anddoNothing
.- --if-missing <ação>
- --no-if-missing
Specify what action will be performed when there is no other trailer with the same <key> in the input. A setting provided with --if-missing overrides the
trailer.ifMissing
and any applicabletrailer.<keyAlias>.ifMissing
configuration variables and applies to all --trailer options until the next occurrence of --if-missing or --no-if-missing. Upon encountering '--no-if-missing, clear the effect of any previous use of '--if-missing, such that the relevant configuration variables are no longer overridden. Possible actions aredoNothing
oradd
.- --only-trailers
Exibe apenas os caracteres de resposta e não quaisquer outras partes da entrada.
- --only-input
Gera apenas aos trailers existentes na entrada; não adicione nenhum a partir da linha de comando ou aplicando as variáveis de configuração
trailer.*
.- --unfold
Se um trailer tiver um valor que se estenda por diversas linhas (também conhecido como "dobrado"), reformate o valor em uma única linha.
- --parse
Um alias conveniente para
--only-trailers --only-input --unfold
. Isso facilita a visualização apenas dos trailers provenientes da entrada, sem influenciá-los com nenhuma opção de linha de comando ou variável de configuração, ao mesmo tempo em que torna a saída amigável à máquina com--unfold
.- --no-divider
Não trate
---
como o final da mensagem de commit. Utilize isso quando souber que a sua entrada tenha apenas a própria mensagem do commit (e não um e-mail ou a saída dogit format-patch
).
VARIÁVEIS DE CONFIGURAÇÃO
- trailer.separators
Esta opção informa quais os caracteres são reconhecidos como separadores dos caracteres de resposta. É predefinido que apenas o
:
seja reconhecido como um, a menos que=
seja sempre aceito na linha de comando por questões de compatibilidade com os outros comandos git.O primeiro caractere informado por esta opção será o caractere predefinido que será utilizado quando um outro separador não seja utilizado na configuração deste
caractere de resposta
.Como por exemplo, caso o valor desta opção seja "%=$", apenas as linhas que usam o formato <key><sep><valor> com <sep> contendo %, = ou $ e os espaços, serão considerados
caracteres de resposta
. É predefinido que o sinal % será utilizado como um separador; portanto, os caracteres de resposta aparecerão como: <key>% <valor> (um sinal de porcentagem e um espaço aparecerão entre key e o valor).- trailer.where
Esta opção informa onde um novo caractere de resposta será adicionado.
Pode ser
end
(pré definido),` start`,after
ou` before`.Caso seja
end
, então cada novo caractere de resposta aparecerá no final dos caracteres de resposta já existentes.Caso seja
start
, cada novo caractere de resposta aparecerá no início, e não no final, dos caracteres de resposta já existentes.Caso seja
after
, cada novo caractere de resposta aparecerá logo após o último caractere de resposta com o mesmo <key>.Caso seja
before
, então cada novo caractere de resposta aparecerá logo no começo do primeiro caractere de resposta com o mesmo <key>.- trailer.ifexists
Essa opção permite escolher a ação a ser executada quando já houver pelo menos um caractere de resposta com a mesma <key> na entrada.
Os valores válidos para esta opção são:
addIfDifferentNeighbor
(predefinido),addIfDifferent
,add
,replace
oudoNothing
.Com
addIfDifferentNeighbor
, um novo caractere de resposta será adicionado apenas caso nenhum com o mesmo par (<key>,<valor>) esteja acima ou abaixo da linha onde o novo caractere de resposta será adicionado.Com
addIfDifferent
, um novo caractere de resposta será adicionado somente se nenhum caractere de resposta com o mesmo par (<key>, <valor>) já estiver na entrada.Com
add
, um novo caractere de resposta será adicionado, mesmo que alguns caracteres de resposta com o mesmo par (<token>, <valor>) já estejam na entrada.Com
replace
, um caractere de resposta existente com a mesmo <key> será excluído e um novo será adicionado. O caractere de resposta excluído será o mais próximo (com o mesmo <key>) do local onde o novo será adicionado.Com
doNothing
, nada será feito, ou seja, nenhum novo caractere de resposta será adicionado se já houver um com o mesmo <key> na entrada.- trailer.ifmissing
Essa opção permite escolher a ação a ser executada quando ainda não houver nenhum atrelado com o mesmo <key> na entrada.
Os valores válidos para esta opção são:
add
(o valor predefinido) edoNothing
.Com
add
, um novo caractere de resposta será adicionado.Com
doNothing
, nada será feito.- trailer.<keyAlias>.key
Define um <keyAlias> para a <key>. O <keyAlias> deve ser um prefixo (as maiúsculas e minúsculas não importam) da <key>. Por exemplo, em
git config trailer.ack.key "Acked-by"
, "Acked-by" é a <key> e "ack" é o <keyAlias>. Essa configuração permite a invocação mais curta do--trailer "ack:..."
na linha de comando usando o <keyAlias> "ack" em vez do--trailer "Acked-by:..."
mais longo.No final da <key>, pode aparecer um separador e, em seguida, alguns caracteres de espaço. Por padrão, o único separador válido é :, mas isso pode ser alterado usando a variável de configuração
trailer.separators
.Se houver um separador na chave, ele substituirá o separador padrão ao adicionar o trailer.
- trailer.<keyAlias>.where
Esta opção utiliza os mesmos valores da variável de configuração trailer.where e substitui o que for especificado por essa opção para os caracteres de resposta com o
<keyAlias>
determinado.- trailer.<keyAlias>.ifexists
Essa opção utiliza os mesmos valores que a variável de configuração trailer.ifexists e substitui o que for definido por esta opção para os caracteres de resposta com o <keyAlias> informado.
- trailer.<keyAlias>.ifmissing
Esta opção utiliza os mesmos valores que a variável de configuração trailer.ifmissing e substitui o que for definido por esta opção para os caracteres de resposta com o <keyAlias> informado.
- trailer.<keyAlias>.command
Deprecated in favor of trailer.<keyAlias>.cmd. This option behaves in the same way as trailer.<keyAlias>.cmd, except that it doesn’t pass anything as argument to the specified command. Instead the first occurrence of substring $ARG is replaced by the <value> that would be passed as argument.
Observe que $ARG no comando do usuário é substituído apenas uma vez e que a maneira original de substituir o $ARG não é segura.
Quando ambos trailer.<keyAlias>.cmd e trailer.<keyAlias>.command são oferecidos para o mesmo <keyAlias>, o trailer.<keyAlias>.cmd é usado e o trailer.<keyAlias>.command é ignorado.
- trailer.<keyAlias>.cmd
Essa opção pode ser usada para especificar um comando do shell que será chamado uma vez para adicionar automaticamente um caractere de resposta com o <keyAlias> especificado e, em seguida, chamado toda vez que o argumento --trailer <keyAlias>=<valor> for usado para alterar o <valor> do trailer que essa opção produziria.
Quando o comando informado é chamado pela primeira vez para adicionar um atrelado com o <keyAlias> definido, o comportamento é como se um argumento especial --trailer <keyAlias>=<valor> fosse adicionado no início do comando "git interpret-trailers", onde o <valor> é considerado a saída padrão do comando com qualquer espaço em branco eliminado à esquerda e à direita.
Caso algumas opção --trailer <keyAlias>=<valor> também sejam passados na linha de comando, o comando é invocado novamente uma vez para cada um destes argumentos que tenham o mesmo <keyAlias>. E a parte <valor> desses argumentos, caso hajam, será passada ao comando como sendo o seu primeiro argumento. Desta forma, o comando pode produzir um <valor> calculado a partir do <valor> informado na opção --trailer <keyAlias>=<valor>.
EXEMPLOS
Configure uma "assinatura" como caractere de resposta com "Signed-off-by" e, em seguida, adicione dois desses caracteres de resposta a um arquivo de mensagem de confirmação:
$ git config trailer.sign.key "Assinado-por" $ cat msg.txt subject corpo de texto $ git interpret-trailers --trailer 'sign: Alice <alice@example.com>' --trailer 'sign: Bob <bob@example.com>' <msg.txt subject corpo do texto Assinado-por: Alice <alice@example.com> Assinado-por: Bob <bob@example.com>
Use a opção
--in-place
para editar um arquivo de mensagem de confirmação no local:$ cat msg.txt subject corpo do texto Assinado-por: Bob <bob@example.com> $ git interpret-trailers --trailer 'Acked-by: Alice <alice@example.com>' --in-place msg.txt $ cat msg.txt subject corpo do texto Assinado-por: Bob <bob@example.com> Reconhecido-por: Alice <alice@example.com>
Extraia o último commit como um patch e adicione um caractere de resposta Cc com um Revisado por a ele:
$ git format-patch -1 0001-foo.patch $ git interpret-trailers --trailer 'Cc: Alice <alice@example.com>' --trailer 'Reviewed-by: Bob <bob@example.com>' 0001-foo.patch >0001-bar.patch
Configure um caractere de resposta sign com um comando para adicionar automaticamente um Assinado-por: com as informações do autor apenas se ainda não houver um Assinado-por: e exiba como ele funciona:
$ cat msg1.txt subject corpo do texto $ git config trailer.sign.key "Signed-off-by: " $ git config trailer.sign.ifmissing add $ git config trailer.sign.ifexists doNothing $ git config trailer.sign.cmd 'echo "$(git config user.name) <$(git config user.email)>"' $ git interpret-trailers --trailer sign <msg1.txt assunto corpo do texto Signed-off-by: Bob <bob@example.com> $ cat msg2.txt subject corpo do texto Signed-off-by: Alice <alice@example.com> $ git interpret-trailers --trailer sign <msg2.txt subject corpo do texto Assinado-por: Alice <alice@example.com>
Configure um caracteres de resposta fix com uma chave que contenha um #, sem espaço após este caractere e mostre como ele funciona:
$ git config trailer.separators ":#" $ git config trailer.fix.key "Fix #" $ echo "subject" | git interpret-trailers --trailer fix=42 subject Fix #42
Configure um atrelado de ajuda com um cmd usando um script
glog-find-author
que pesquisa a identidade do autor informado no log do git no repositório e mostre como funciona:$ cat ~/bin/glog-find-author #!/bin/sh test -n "$1" && git log --author="$1" --pretty="%an <%ae>" -1 || true $ cat msg.txt subject corpo do texto $ git config trailer.help.key "Helped-by: " $ git config trailer.help.ifExists "addIfDifferentNeighbor" $ git config trailer.help.cmd "~/bin/glog-find-author" $ git interpret-trailers --trailer="help:Junio" --trailer="help:Couder" <msg.txt assunto corpo do texto Auxiliado por: Junio C Hamano <gitster@pobox.com> Auxiliado por: Christian Couder <christian.couder@gmail.com>
Configure um atrelado ref com um cmd, use um script
glog-grep
para fazer um "grep" (captura) do último commit relevante do log do git no repositório e mostre como funciona:$ cat ~/bin/glog-grep #!/bin/sh test -n "$1" && git log --grep "$1" --pretty=reference -1 || true $ cat msg.txt subject corpo do texto $ git config trailer.ref.key "Reference-to: " $ git config trailer.ref.ifExists "replace" $ git config trailer.ref.cmd "~/bin/glog-grep" $ git interpret-trailers --trailer="ref:Add copyright notices." <msg.txt assunto corpo do texto Refere-se ao: 8bc9a0c769 (Adicionado avisos de ireitos autorais., 2005-04-07)
Configure um caractere de resposta see com um comando para exibir o assunto de um commit relacionado e exibir como ele funciona:
$ cat msg.txt subject corpo do texto see: HEAD~2 $ cat ~/bin/glog-ref #!/bin/sh git log -1 --oneline --format="%h (%s)" --abbrev-commit --abbrev=14 $ git config trailer.see.key "See-also: " $ git config trailer.see.ifExists "replace" $ git config trailer.see.ifMissing "doNothing" $ git config trailer.see.cmd "glog-ref" $ git interpret-trailers --trailer=see <msg.txt subject corpo do texto See-also: fe3187489d69c4 (assunto do commit relacionado)
Configure um modelo do commit com alguns caracteres de resposta com valores vazios (utilizando o comando sed para exibir e manter os espaços finais no final dos caracteres de resposta) e configure um gancho commit-msg que utilize o comando git interpret-trailers para remover os caracteres de resposta com os valores vazios e para adicionar um git-version:
$ cat temp.txt ***subject*** ***message*** Fixes: Z Cc: Z Reviewed-by: Z Signed-off-by: Z $ sed -e 's/ Z$/ /' temp.txt > commit_template.txt $ git config commit.template commit_template.txt $ cat .git/hooks/commit-msg #!/bin/sh git interpret-trailers --trim-empty --trailer "git-version: \$(git describe)" "\$1" > "\$1.new" mv "\$1.new" "\$1" $ chmod +x .git/hooks/commit-msg
GIT
Parte do conjunto git[1]