Como depurar problemas relacionados ao git / git-shell?

148

Como posso obter algumas informações de depuração relacionadas ao git / git-shell?

Eu tive um problema, que user1poderia clonar um repositório sem problemas, enquanto user2poderia clonar apenas um repositório vazio. Eu havia definido GIT_TRACE=1, mas nada de útil foi dito.

Finalmente, após uma longa tentativa e erro, verificou-se que era um problema de permissão em um arquivo. Uma mensagem de erro apropriada pode causar um curto-circuito neste problema.

Andor
fonte
Nota: além disso GIT_CURL_VERBOSE, você terá com o Git 2.9.x / 2.10 GIT_TRACE_CURL. Veja minha resposta abaixo .
VonC 9/07/16
E (segundo trimestre de 2019, três anos depois GIT_TRACE_CURL), você já tem trace2. Exemplo: git config --global trace2.normalTarget ~/log.normal. Veja minha (nova) resposta abaixo .
VonC 13/05/19

Respostas:

212

Para uma saída ainda mais detalhada, use o seguinte:

GIT_CURL_VERBOSE=1 GIT_TRACE=1 git pull origin master

WTK
fonte
53
Existem algumas opções GIT_TRACE, além da principal. Aqui está a opção über-detalhada:set -x; GIT_TRACE=2 GIT_CURL_VERBOSE=2 GIT_TRACE_PERFORMANCE=2 GIT_TRACE_PACK_ACCESS=2 GIT_TRACE_PACKET=2 GIT_TRACE_PACKFILE=2 GIT_TRACE_SETUP=2 GIT_TRACE_SHALLOW=2 git pull origin master -v -v; set +x
Paul Irish
2
Como e onde definir essas variáveis?
Hunsu 15/01/16
É apenas uma linha inteira que você pode colar no seu terminal. Você deve substituir a git pull origin masterpeça pelo comando que deseja executar.
Aeolun
1
Em quais plataformas isso funciona? Certamente não é o Windows.
cowlinator
8
No Windows, você pode definir essas variáveis, uma de cada vez (um por linha), assim:set GIT_CURL_VERBOSE=1 set GIT_TRACE=1 git pull origin master
cowlinator
85

Depuração

O Git possui um conjunto bastante completo de rastreamentos incorporados, que você pode usar para depurar seus problemas do git.

Para ativá-los, você pode definir as seguintes variáveis:

  • GIT_TRACE para traços gerais,
  • GIT_TRACE_PACK_ACCESS para rastreamento de acesso ao packfile,
  • GIT_TRACE_PACKET para rastreamento em nível de pacote para operações de rede,
  • GIT_TRACE_PERFORMANCE para registrar os dados de desempenho,
  • GIT_TRACE_SETUP para obter informações sobre como descobrir o repositório e o ambiente com os quais ele está interagindo,
  • GIT_MERGE_VERBOSITY para depurar estratégia de mesclagem recursiva (valores: 0-5),
  • GIT_CURL_VERBOSEpara registrar todas as mensagens de ondulação (equivalentes a curl -v),
  • GIT_TRACE_SHALLOW para depuração de busca / clonagem de repositórios rasos.

Os valores possíveis podem incluir:

  • true, 1ou 2para escrever para stderr,
  • um caminho absoluto começando com /para rastrear a saída para o arquivo especificado.

Para obter mais detalhes, consulte: Git Internals - Environment Variables


SSH

Para problemas de SSH, tente os seguintes comandos:

echo 'ssh -vvv "$*"' > ssh && chmod +x ssh
GIT_SSH="$PWD/ssh" git pull origin master

ou use sshpara validar suas credenciais, por exemplo

ssh -vvvT [email protected]

ou pela porta HTTPS:

ssh -vvvT -p 443 [email protected]

Nota: Reduza o número de -vpara reduzir o nível de verbosidade.


Exemplos

$ GIT_TRACE=1 git status
20:11:39.565701 git.c:350               trace: built-in: git 'status'

$ GIT_TRACE_PERFORMANCE=$PWD/gc.log git gc
Counting objects: 143760, done.
...
$ head gc.log 
20:12:37.214410 trace.c:420             performance: 0.090286000 s: git command: 'git' 'pack-refs' '--all' '--prune'
20:12:37.378101 trace.c:420             performance: 0.156971000 s: git command: 'git' 'reflog' 'expire' '--all'
...

$ GIT_TRACE_PACKET=true git pull origin master
20:16:53.062183 pkt-line.c:80           packet:        fetch< 93eb028c6b2f8b1d694d1173a4ddf32b48e371ce HEAD\0multi_ack thin-pack side-band side-band-64k ofs-delta shallow no-progress include-tag multi_ack_detailed symref=HEAD:refs/heads/master agent=git/2:2.6.5~update-ref-initial-update-1494-g76b680d
...
kenorb
fonte
2
Mudar echo 'ssh -vvv $*' > ssh && chmod +x sshpara echo 'ssh -vvv "$@"' > ssh && chmod +x sshdeve ser mais seguro no caso de borda em que um único parâmetro tem um espaço nele.
Alexander Ave
46

tente este:

GIT_TRACE=1 git pull origin master
CC
fonte
40

Se for sobre SSH, você pode usar o seguinte:

Para um nível de depuração mais alto para o tipo -vv ou -vvv para o nível de depuração 2 e 3, respectivamente:

# Debug level 1
GIT_SSH_COMMAND="ssh -v" git clone <repositoryurl>

# Debug level 2
GIT_SSH_COMMAND="ssh -vv" git clone <repositoryurl>

# Debug level 3
GIT_SSH_COMMAND="ssh -vvv" git clone <repositoryurl>

Isso é útil principalmente para lidar com problemas de chave pública e privada com o servidor. Você pode usar este comando para qualquer comando git, não apenas para 'git clone'.

Basil Musa
fonte
Sim, isso funciona perfeito. Melhor que os outros. Sim, isso funciona perfeito. Melhor que os outros.
BMW
Isso seria mais útil, pois tenho que resolver um problema importante agora, mas não funciona para mim com o git 1.8.3.1 e o OpenSSH_6.6.1p1, OpenSSL 1.0.1e-fips 11 de fevereiro de 2013 no CentOS Linux versão 7.2.1511 (Testemunho). :(
Greg Dubicki 06/06
@GregDubicki Strange. Deixe-me saber o que funciona para você, para que eu possa atualizar a resposta.
Basil Musa
1
No Windows, use set GIT_SSH_COMMAND=ssh -v(sem aspas).
jansohn
18

O Git 2.9.x / 2.10 (terceiro trimestre de 2016) adiciona outra opção de depuração: GIT_TRACE_CURL .

Veja commit 73e57aa , commit 74c682d (23 de maio de 2016) por Elia Pinto ( devzero2000) .
Ajudado por: Torsten Bögershausen ( tboegi) , Ramsay Jones, Junio ​​C Hamano ( gitster) , Eric Sunshine ( sunshineco) e Jeff King ( peff) .
(Mesclado por Junio ​​C Hamano - gitster- no commit 2f84df2 , 06 de julho de 2016)

http.c: implementar a GIT_TRACE_CURLvariável de ambiente

Implemente a GIT_TRACE_CURLvariável de ambiente para permitir um maior grau de detalhes GIT_CURL_VERBOSE, em particular o cabeçalho de transporte completo e toda a carga útil de dados trocada.
Pode ser útil se uma situação específica exigir uma análise de depuração mais completa.

A documentação indicará:

GIT_TRACE_CURL

Permite um rastreamento de rastreamento completo de todos os dados recebidos e enviados, incluindo informações descritivas, do protocolo de transporte git.
Isso é semelhante a fazer curl --trace-asciina linha de comando.

Esta opção substitui a configuração da GIT_CURL_VERBOSEvariável de ambiente.


Você pode ver a nova opção usada nesta resposta , mas também nos testes do Git 2.11 (quarto trimestre de 2016):

Consulte commit 14e2411 , commit 81590bf , commit 4527aa1 , commit 4eee6c6 (07 set 2016) por Elia Pinto ( devzero2000) .
(Mesclado por Junio ​​C Hamano - gitster- na confirmação 930b67e , 12 de setembro de 2016)

Use a nova GIT_TRACE_CURLvariável de ambiente em vez da obsoleta GIT_CURL_VERBOSE .

GIT_TRACE_CURL=true git clone --quiet $HTTPD_URL/smart/repo.git
VonC
fonte
Esse recurso é legal! O único ponto é a saída ASCII (onde eles imprimem tudo o que não é (ch >= 0x20) && (ch < 0x80)como ponto .) e nenhuma maneira de saída hexadecimal para dados http.
KinORnirvana
8

O Git 2.22 (Q2 2019) é apresentado trace2com o commit ee4512e de Jeff Hostetler :

trace2: crie um novo recurso de rastreio combinado

Crie um novo recurso de rastreamento unificado para o git.
A intenção final é substituir a corrente trace_printf*e as trace_performance*rotinas por um conjunto unificado de git_trace2*rotinas.

Além da API habitual no estilo printf, trace2fornece verbos de eventos no nível mais alto com campos fixos, permitindo a gravação de dados estruturados.
Isso facilita o pós-processamento e a análise de ferramentas externas.

Trace2 define três destinos de saída.
Eles são configurados usando as variáveis ​​de ambiente " GIT_TR2", "GIT_TR2_PERF " e " GIT_TR2_EVENT".
Eles podem ser definidos como "1" ou com um nome de caminho absoluto (assim como o atual GIT_TRACE).

Nota: em relação ao nome da variável de ambiente, use sempre GIT_TRACExxx, não GIT_TRxxx.
Então GIT_TRACE2, na verdade , GIT_TRACE2_PERFou GIT_TRACE2_EVENT.
Veja a renomeação do Git 2.22 mencionada posteriormente abaixo.

A seguir, é apresentado o trabalho inicial desse novo recurso de rastreamento, com o nomes de variáveis ​​de ambiente antigos :

  • GIT_TR2 destina-se a substituir um GIT_TRACE dados de resumo do comando and logs.

  • GIT_TR2_PERF destina-se a substituir o GIT_TRACE_PERFORMANCE .
    Ele estende a saída com colunas para o processo de comando, encadeamento, repo, tempos absolutos e relativos. Ele relata eventos para início / parada do processo filho, início / parada do encadeamento e aninhamento de função por encadeamento.

  • GIT_TR2_EVENTé um novo formato estruturado. Ele grava dados do evento como uma série de registros JSON.

As chamadas para as funções trace2 registram-se em qualquer um dos três destinos de saída ativados sem a necessidade de chamar diferentes trace_printf*trace_performance* rotinas ou .

Veja commit a4d3a28 (21 Mar 2019) por Josh Steadmon ( steadmon) .
(Mesclado por Junio ​​C Hamano - gitster- no commit 1b40314 , 08 de maio de 2019)

trace2: gravar nos destinos de diretório

Quando o valor de uma variável de ambiente trace2 for um caminho absoluto referente a um diretório existente, grave a saída nos arquivos (um por processo) abaixo do diretório fornecido.
Os arquivos serão nomeados de acordo com o componente final do SID trace2, seguido por um contador para evitar possíveis colisões.

Isso torna mais conveniente coletar rastreamentos para cada chamada de git, definindo incondicionalmente o trace2envvar relevante como um nome de diretório constante.


Consulte também commit f672dee (29 abr 2019) e commit 81567ca , commit 08881b9 , commit bad229a , commit 26c6f25 , commit bce9db6 , commit 800a7f9 , commit a7bc01e , commit 39f4317 , commit a089724 , commit 1703751 (15 abr 2019) por Jeff Hostetler ( jeffhostetler) .
(Incorporado por Junio ​​C Hamano - gitster- in commit 5b2d1c0 , 13 de maio de 2019)

A nova documentação agora inclui definições de configuração que são lidas apenas a partir do sistema e dos arquivos de configuração globais (o que significa que os arquivos de configuração locais e da árvore de trabalho do repositório e os -cargumentos da linha de comando não são respeitados.)

Exemplo :

$ git config --global trace2.normalTarget ~/log.normal
$ git version
git version 2.20.1.155.g426c96fcdb

rendimentos

$ cat ~/log.normal
12:28:42.620009 common-main.c:38                  version 2.20.1.155.g426c96fcdb
12:28:42.620989 common-main.c:39                  start git version
12:28:42.621101 git.c:432                         cmd_name version (version)
12:28:42.621215 git.c:662                         exit elapsed:0.001227 code:0
12:28:42.621250 trace2/tr2_tgt_normal.c:124 atexit elapsed:0.001265 code:0

E para medir o desempenho :

$ git config --global trace2.perfTarget ~/log.perf
$ git version
git version 2.20.1.155.g426c96fcdb

rendimentos

$ cat ~/log.perf
12:28:42.620675 common-main.c:38                  | d0 | main                     | version      |     |           |           |            | 2.20.1.155.g426c96fcdb
12:28:42.621001 common-main.c:39                  | d0 | main                     | start        |     |  0.001173 |           |            | git version
12:28:42.621111 git.c:432                         | d0 | main                     | cmd_name     |     |           |           |            | version (version)
12:28:42.621225 git.c:662                         | d0 | main                     | exit         |     |  0.001227 |           |            | code:0
12:28:42.621259 trace2/tr2_tgt_perf.c:211         | d0 | main                     | atexit       |     |  0.001265 |           |            | code:0

Conforme documentado no Git 2.23 (terceiro trimestre de 2019), a variável de ambiente a ser usada é GIT_TRACE2.

Veja commit 6114a40 (26 jun 2019) de Carlo Marcelo Arenas Belón ( carenas) .
Veja commit 3efa1c6 (12 Jun 2019) por Ævar Arnfjörð Bjarmason ( avar) .
(Mesclado por Junio ​​C Hamano - gitster- in commit e9eaaa4 , 09 jul 2019)

Isso segue o trabalho realizado no Git 2.22: commit 4e0d3aa , commit e4b75d6 (19 de maio de 2019) por SZEDER Gábor ( szeder) .
(Incorporado por Junio ​​C Hamano - gitster- in commit 463dca6 , 30 de maio de 2019)

trace2: renomeie variáveis ​​de ambiente para GIT_TRACE2 *

Para uma variável de ambiente que deveria ser definida pelos usuários, os ambientes GIT_TR2*são muito pouco claros, inconsistentes e feios.

A maioria dos estabelecidos GIT_*variáveis de ambiente não usar abreviaturas, e no caso dos poucos que fazer ( GIT_DIR, GIT_COMMON_DIR, GIT_DIFF_OPTS) é bastante óbvio que as abreviaturas ( DIRe OPTS) representam.
Mas o que TRsignifica? Rastrear, tradicional, trailer, transação, transferência, transformação, transição, tradução, transplante, transporte, travessia, árvore, gatilho, truncamento, confiança ou ...?!

O recurso trace2, como o sufixo '2' em seu nome sugere, supostamente substituirá o recurso de rastreamento original do Git.
É razoável esperar que as variáveis ​​de ambiente correspondentes sigam o exemplo e, depois das GIT_TRACEvariáveis originais , elas são chamadas GIT_TRACE2; não existe tal coisa é ' GIT_TR'.

Todas as variáveis ​​de configuração específicas do trace2 estão, muito sensatamente, na seção ' trace2', não em ' tr2'.

OTOH, não ganhamos nada ao omitir os três últimos caracteres do "rastreio" dos nomes dessas variáveis ​​de ambiente .

Então, vamos renomear todas GIT_TR2*as variáveis ​​de ambiente para GIT_TRACE2*, antes que elas cheguem a um release estável.


O Git 2.24 (terceiro trimestre de 2019) melhora a inicialização do repositório Git.

Consulte commit 22932d9 , commit 5732f2b , commit 58ebccb (06 ago 2019) por Jeff King ( peff) .
(Mesclado por Junio ​​C Hamano - gitster- in commit b4a1eec , 09 set 2019)

common-main: atraso na inicialização do trace2

Inicializamos o trace2sistema na função main () comum, para que todos os programas (mesmo aqueles que não sejam integrados) habilitem o rastreio.

Mas a trace2inicialização é relativamente pesada, pois precisamos ler a configuração do disco para decidir se devemos rastrear.
Isso pode causar interações inesperadas com outra inicialização principal comum. Por exemplo, terminaremos no código de configuração antes de chamar initialize_the_repository(), e a invariante usual que the_repositorynunca é NULL não será mantida.

Vamos empurrar a trace2inicialização ainda mais para baixo no common-main, antes de executar cmd_main().


O Git 2.24 (quarto trimestre de 2019) também garante que a saída do trace2subsistema seja formatada com mais beleza agora.

Consulte commit 742ed63 , commit e344305 , commit c2b890a (09 de agosto de 2019), commit ad43e37 , commit 04f10d3 , commit da4589c (08 ago 2019) e commit 371df1b (31 jul 2019) por Jeff Hostetler ( jeffhostetler) .
(Incorporado por Junio ​​C Hamano - gitster- in commit 93fc876 , 30 set 2019)

E, ainda Git 2.24

Consulte commit 87db61a , commit 83e57b0 (04 out 2019) e commit 2254101 , commit 3d4548e (03 out 2019) por Josh Steadmon ( steadmon) .
(Incorporado por Junio ​​C Hamano - gitster- in commit d0ce4d9 , 15 out 2019)

trace2: descartar novos rastreamentos se o diretório de destino tiver muitos arquivos

Assinado por: Josh Steadmon

trace2pode gravar arquivos em um diretório de destino.
Com uso intenso, esse diretório pode ser preenchido com arquivos, causando dificuldade para os sistemas de processamento de rastreamento.

Este patch adiciona uma opção de configuração ( trace2.maxFiles) para definir um número máximo de arquivos que trace2serão gravados em um diretório de destino.

O seguinte comportamento é ativado quando o maxFilesé definido como um número inteiro positivo:

  • Quando trace2gravar um arquivo em um diretório de destino, verifique primeiro se os rastreamentos devem ou não ser descartados. Os rastreamentos devem ser descartados se:

    • existe um arquivo sentinela declarando que há muitos arquivos
    • OU, o número de arquivos excede trace2.maxFiles.
      No último caso, criamos um arquivo sentinela chamado git-trace2-discardpara acelerar verificações futuras.

A suposição é que um sistema de processamento de rastreamento separado esteja lidando com os rastreamentos gerados; Depois de processar e remover o arquivo sentinela, deve ser seguro gerar novos arquivos de rastreamento novamente.

O valor padrão para trace2.maxFilesé zero, o que desativa a verificação da contagem de arquivos.

A configuração também pode ser substituída por uma nova variável de ambiente: GIT_TRACE2_MAX_FILES.


E o Git 2.24 (quarto trimestre de 2019) ensina o trace2 sobre os git pushestágios.

Veja commit 25e4b80 , commit 5fc3118 (02 out 2019) por Josh Steadmon ( steadmon) .
(Incorporado por Junio ​​C Hamano - gitster- in commit 3b9ec27 , 15 out 2019)

push: adicionar instrumentação trace2

Assinado por: Josh Steadmon

Adicione regiões trace2 transport.ce builtin/push.cpara controlar melhor o tempo gasto em várias fases de envio:

  • Listagens refs
  • Verificando submódulos
  • Empurrando submódulos
  • Empurrando refs

Com o Git 2.25 (primeiro trimestre de 2020), alguns Documentation/technicaldeles são movidos para os *.harquivos de cabeçalho .

Veja cometer 6c51cb5 , cometer d95a77d , cometer bbcfa30 , cometer f1ecbe0 , cometer 4c4066d , cometer 7db0305 , cometer f3b9055 , cometer 971b1f2 , cometer 13aa9c8 , cometer c0be43f , cometer 19ef3dd , cometer 301d595 , cometer 3a1b341 , cometer 126c1cc , cometer d27eb35 , cometer 405c6b1 , cometer d3d7172 , commit 3f1480b , commit 266f03e , confirmar 13c4d7e(17 Nov 2019) porHeba Waly ( HebaWaly) .
(Incorporado por Junio ​​C Hamano - gitster- in commit 26c816a , 16 dez 2019)

trace2: mover documento para trace2.h

Assinado por: Heba Waly

Mova a documentação das funções de Documentation/technical/api-trace2.txtpara trace2.h, pois é mais fácil para os desenvolvedores encontrar as informações de uso ao lado do código, em vez de procurá-las em outro arquivo doc.

Somente a seção de documentação de funções é removida, Documentation/technical/api-trace2.txtpois o arquivo está cheio de detalhes que pareciam mais apropriados em um arquivo doc separado, com um link para o arquivo doc adicionado no trace2.h. Além disso, o documento de funções é removido para evitar informações redundantes, que dificilmente serão sincronizadas com a documentação no arquivo de cabeçalho.

(embora essa reorganização tenha tido um efeito colateral em outro comando, explicado e corrigido no Git 2.25.2 (março de 2020) no commit cc4f2eb (14 de fevereiro de 2020) por Jeff King ( peff) .
(Mesclado por Junio ​​C Hamano - gitster- no commit 1235384 , 17 de fevereiro de 2020) )


Com Git 2.27 (Q2 2020): aprimoramento do Trace2 para permitir o registro de variáveis ​​de ambiente .

Veja commit 3d3adaa (20 de março de 2020) de Josh Steadmon ( steadmon) .
(Mesclado por Junio ​​C Hamano - gitster- no commit 810dc64 , 22 de abril de 2020)

trace2: ensine o Git a registrar variáveis ​​de ambiente

Assinado por: Josh Steadmon
Aceita por: Jeff Hostetler

Através do trace2, o Git já pode registrar parâmetros interessantes de configuração (consulte o trace2_cmd_list_config() função). No entanto, isso pode fornecer uma imagem incompleta, porque muitos parâmetros de configuração também permitem substituições por meio de variáveis ​​de ambiente.

Para permitir logs mais completos, adicionamos uma nova trace2_cmd_list_env_vars()função e implementação de suporte, modelada após a implementação de log de parâmetros de configuração preexistente.


Com o Git 2.27 (Q2 2020), ensine caminhos de código que mostram o medidor de progresso a também usar start_progress()as stop_progress()chamadas e como um "region " a ser rastreado.

Veja commit 98a1364 (12 de maio de 2020) de Emily Shaffer ( nasamuffin) .
(Incorporado por Junio ​​C Hamano - gitster- in commit d98abce , 14 de maio de 2020)

trace2: registrar o tempo e a taxa de transferência

Assinado por: Emily Shaffer

Em vez de ensinar apenas uma operação, como ' git fetch', como escrever a taxa de transferência em rastreamentos, podemos aprender sobre uma ampla gama de operações do usuário que podem parecer lentas, adicionando ferramentas à própria biblioteca de progresso .

As operações que exibem o progresso provavelmente serão de execução lenta e, de qualquer maneira, o tipo de coisa que queremos monitorar o desempenho.

Ao mostrar a contagem de objetos e o tamanho da transferência de dados, poderemos fazer algumas medições derivadas para garantir que as operações estejam escalando da maneira esperada.

E:

Com o Git 2.27 (Q2 2020), correção de última hora para nossas alterações recentes para permitir o uso da API de progresso como uma região rastreável.

Veja commit 3af029c (15 de maio de 2020) por Derrick Stolee ( derrickstolee) .
(Mesclado por Junio ​​C Hamano - gitster- na confirmação 85d6e28 , 20 de maio de 2020)

progress: ligar trace2_region_leave()somente depois de ligar_enter()

Assinado por: Derrick Stolee

Um usuário da API de progresso chama start_progress()condicionalmente e depende das funções display_progress()e stop_progress()para se tornar não operacional quando start_progress()não tiver sido chamado.

Como nós adicionamos uma chamada para trace2_region_enter()a start_progress(), as chamadas para outras chamadas de API trace2 das funções progresso API deve certificar-se de que essas chamadas trace2 são ignorados quandostart_progress() não foi chamado na struct progresso.

Especificamente, não chame trace2_region_leave()a partir de stop_progress()quando não têm chamado start_progress(), que teria chamado a correspondência trace2_region_enter().

VonC
fonte
4

Você tentou adicionar o -voperador verbose ( ) ao clonar?

git clone -v git://git.kernel.org/pub/scm/.../linux-2.6 my2.6

JamesHalsall
fonte
2

Para versões mais antigas do git (1.8 e anterior)

Não consegui encontrar uma maneira adequada de habilitar a depuração SSH nas versões git e ssh mais antigas. Procurei variáveis ​​de ambiente usandoltrace -e getenv ...Procurei variáveis e não consegui encontrar nenhuma combinação de variáveis ​​GIT_TRACE ou SSH_DEBUG que funcionassem.

Em vez disso, aqui está uma receita para injetar temporariamente 'ssh -v' na sequência git-> ssh:

$ echo '/usr/bin/ssh -v ${@}' >/tmp/ssh
$ chmod +x /tmp/ssh
$ PATH=/tmp:${PATH} git clone ...
$ rm -f /tmp/ssh

Aqui está a saída do git versão 1.8.3 com a versão ssh OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 de fevereiro de 2013 clonando um repositório do github:

$ (echo '/usr/bin/ssh -v ${@}' >/tmp/ssh; chmod +x /tmp/ssh; PATH=/tmp:${PATH} \
   GIT_TRACE=1 git clone https://github.com/qneill/cliff.git; \
   rm -f /tmp/ssh) 2>&1 | tee log
trace: built-in: git 'clone' 'https://github.com/qneill/cliff.git'
trace: run_command: 'git-remote-https' 'origin' 'https://github.com/qneill/cliff.git'
Cloning into 'cliff'...
OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
debug1: Reading configuration data /home/q.neill/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to github.com ...
...
Transferred: sent 4120, received 724232 bytes, in 0.2 seconds
Bytes per second: sent 21590.6, received 3795287.2
debug1: Exit status 0
trace: run_command: 'rev-list' '--objects' '--stdin' '--not' '--all'
trace: exec: 'git' 'rev-list' '--objects' '--stdin' '--not' '--all'
trace: built-in: git 'rev-list' '--objects' '--stdin' '--not' '--all'
qneill
fonte