Pergunta

Estou configurando meu primeiro projeto Hudson + Git (anteriormente feito muitos com o Hudson + SVN). Eu esperava que o estágio do clone fosse lento, pois nosso repositório é bastante grande, mas as construções subsequentes onde uma fetch + fusão está sendo usada são tão longas. As seguintes opções estão ativadas:

  • Mesclar antes da construção
  • Limpe após a finalização da compra

Eu sou não Fazendo um "Wipe Out Workspace".

...
Fetching changes from the remote Git repository
Fetching upstream changes from git@github.com:username/ProjectFoo.git
[Foo] $ git fetch -t git@github.com:username/ProjectFoo.git +refs/heads/*:refs/remotes/origin/*

Neste ponto, ele parar por muito tempo. Uma vez finalmente termina, parece progredir conforme o esperado:

[Foo] $ git ls-tree HEAD
[Foo] $ git rev-parse origin/mybranch
Commencing build of Revision c883d59dd5a506a0b586f679a256f539712bfccc (origin/mybranch)
GitAPI created
Checking out Revision c883d59dd5a506a0b586f679a256f539712bfccc (origin/mybranch)
[Foo] $ git checkout -f c883d59dd5a506a0b586f679a256f539712bfccc
[Foo] $ git tag -a -f -m "Hudson Build #2" hudson-Foo-2
Recording changes in branch origin/mybranch
[Foo] $ git whatchanged --no-abbrev -M --pretty=raw c883d59dd5a506a0b586f679a256f539712bfccc..c883d59dd5a506a0b586f679a256f539712bfccc
Cleaning workspace
[Foo] $ git clean -fdx
...

Quando eu corro o mesmo fetch Comando da linha de comando Git Bash, ele é executado quase instantaneamente.

Alguma ideia do que está acontecendo? Ou sugere para acelerar as coisas? Observe que o repositório clonado é de 210 MB. (Cerca de uma década de histórico de código.)

Foi útil?

Solução

Eu também encontrei esse problema e descobri uma solução alternativa. Quando o Hudson é executado como um serviço, algo está faltando que seu ambiente normal de desktop possui, o que faz com que algo a ver com a rede precise recarregar para cada processo. MSYS-1.0.dll tenta carregar algo no netapi32.dll, o que faz com que ele demore tanto. Então, acabei de baixar Plink.exe da Putty e defino meu Git_ssh Env para usar isso. Problema evitado.

Outras dicas

Esta pode ser uma resposta tardia. Mas ele resolve o problema extremo de llow quando Jenkins/Hudson é executado como um serviço do Windows, no meu ambiente.
O ponto principal é fazer com que o GIT obtenha as teclas RSA em uma conta de serviço do Windows! Eu fiz funcionar como abaixo:

  1. Painel de controle aberto-> Ferramentas administrativas-> Serviços e encontre "Jenkins".
  2. Clique com o botão direito do mouse para abrir as Propriedades-> Faça logon e atribua a Jenkins logo como usuário com acesso ao administrador.
  3. Reinicie Jenkins, e o "git busca" é um raio como está no Linux.

A solução fornecida pelo CCUTRER não funcionou para mim no teste original, porque o Plink não pode obter a chave RSA do concurso (o concurso está em outra sessão do usuário!). Quando minhas etapas implantadas, o OpenSsh e o Plink poderiam funcionar bem até então.

Você poderia tentar um acesso anônimo em vez de um autenticado para sua busca?

$ git config remote.origin.url git://github.com/username/ProjectFoo.git   # read-only
$ git config remote.origin.pushurl git@github.com:username/ProjectFoo.git # authenticated

E veja se a busca ainda está lenta no trabalho de Hudson?

Veja a ilustração "Usando o github com o msysgit".

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top