Pregunta

Estoy configurando mi primer proyecto Hudson + Git (anteriormente hecho muchos con Hudson + SVN). Esperaba que la etapa de clon fuera lenta, ya que nuestro repositorio es bastante grande, pero las construcciones posteriores donde se usa una Fetch + Merge son tan largas. Las siguientes opciones están habilitadas:

  • Fusionarse antes de construir
  • Limpiar después del pago

soy no Haciendo un "espacio de trabajo de eliminación".

...
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/*

En este punto se detiene durante mucho tiempo. Una vez que finalmente termina, parece progresar como se esperaba:

[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
...

Cuando corro lo mismo fetch Comando desde la línea de comandos Git Bash, se ejecuta casi instantáneamente.

¿Alguna idea de lo que puede estar pasando? ¿O sugiere que acelere las cosas? Nota, el repositorio clonado es de 210 MB. (Alrededor de una década de historial de código).

¿Fue útil?

Solución

También me he encontrado con este problema y descubrí una solución. Cuando Hudson se ejecuta como un servicio, falta algo que tiene su entorno de escritorio normal, lo que hace que algo tenga que ver con la red tenga que volver a cargar para cada proceso. msys-1.0.dll intenta cargar algo en netapi32.dll que hace que tarda tanto tiempo. Así que acabo de descargar plink.exe de Putty y configuré mi envío git_ssh para usarlo en su lugar. Problema evitado.

Otros consejos

Esta podría ser una respuesta tardía. Pero sí resuelve el problema de extrema liso cuando Jenkins/Hudson se ejecuta como un servicio de Windows, en mi entorno.
¡El punto clave es hacer que Git obtenga las teclas RSA en una cuenta de servicio de Windows! Hice que funcione como se muestra a continuación:

  1. Abra el panel de control-> Herramientas administrativas-> Servicios y busque "Jenkins".
  2. Haga clic derecho para abrir Propiedades-> Iniciar sesión y asignar Jenkins Iniciar sesión como usuario con acceso al administrador.
  3. Reinicie Jenkins, y "Git Fetch" se vuelve rayo como está en Linux.

La solución proporcionada por CCUTRer, no funcionó para mí en la prueba original, porque Plink no puede obtener la clave RSA del concurso (¡el concurso está en otra sesión de usuario!). Cuando mis pasos se implementaron, OpenSSH y Plink podrían funcionar bien para entonces.

¿Podría probar un acceso anónimo en lugar de uno autenticado para su búsqueda?

$ 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

¿Y vea si la búsqueda sigue siendo lenta dentro del trabajo de Hudson?

Ver para la ilustración "Usando GitHub con Msysgit".

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top