¿Alguna herramienta para hacer que git construya cada compromiso en una sucursal en un repository separado?

Se necesita una herramienta git que cumpla con las especificaciones a continuación. ¿Ya existe uno? Si no, crearé un script y lo pondré disponible en GitHub para que otros lo usen o contribuyan. ¿Hay una manera completamente diferente y mejor de resolver la necesidad de build / probar cada compromiso en una sucursal en un repository git? No solo a lo último sino a cada uno de return a un cierto punto de partida.

Antecedentes: nuestro entorno de desarrollo utiliza un server de continuous integration separado que es maravilloso. Sin embargo, todavía es necesario realizar comstackciones completas localmente en la PC de cada desarrollador para asegurarse de que la confirmación no "rompa la compilation" cuando se envía al server de CI. Desafortunadamente, con las testings de unidades automáticas, esas construcciones obligan al desarrollador a esperar 10 o 15 minutos para una construcción cada vez.

Para resolver esto, hemos configurado un repository git "espejo" en cada PC desarrolladora. Así que nos desarrollamos en el repository principal, pero cada vez que se necesita una compilation completa local. Ejecutamos un par de commands en el repository espejo para recuperar, verificar el compromiso que queremos y comstackr. Sus trabajos son extremadamente encantadores, así que podemos seguir trabajando en el principal con la construcción en paralelo.

Solo hay una preocupación principal ahora. Queremos asegurarnos de que cada commit solo construya y pase las testings. Pero a menudo nos ocupamos y olvidamos build varios commits nuevos. Luego, si la construcción falla, debe hacer una bisección o calcular manualmente cada compromiso interino para descubrir cuál se rompió.

Requisitos para esta herramienta:

  1. La herramienta searchá en otro repository, el origen de forma pnetworkingeterminada, searchá y comparará todas las confirmaciones que están en las twigs en 2 lists de confirmaciones. Una list debe contener confirmaciones comstackdas con éxito y las otras lists comprometen que fallaron.

  2. Identifica los commits que aún no están en ninguna de las lists y comienza a comstackrlos en un bucle en el order en que se cometieron. Se detiene en el primero que falla.

  3. La herramienta agrega apropiadamente cada confirmación a la list de resultados exitosos o fallidos después de intentar el desarrollo de cada uno.

  4. La herramienta ignorará las confirmaciones "henetworkingadas" que sean anteriores al compromiso más antiguo en la list de éxito. Esta lógica hace posible el punto de partida en el siguiente punto.

  5. Punto de partida. La herramienta crea un compromiso específico para que, si tiene éxito, se agregue a la list de éxitos. Si se trata de la confirmación más temprana en la list de éxitos, se convierte en el "punto de partida" para que ninguna de las confirmaciones anteriores se examine en busca de comstackciones.

  6. ¿Solo soporte de tree lineal? Al igual que bisect, esta herramienta funciona mejor en un tree de compromiso que, al less desde su punto de partida, es lineal y sin fusiones. Es decir, debería ser un tree que se creó y actualizó completamente a través de rebase y commits rápidos.

  7. Si falla en una confirmación en una twig, se detendrá sin build el rest que siguió a esa. En cambio, si se moverá a otra twig, si hay alguna.

  8. La herramienta debe realizar estos pasos una vez de forma pnetworkingeterminada, pero permite que un parámetro se repita con una opción para establecer cuántos segundos transcurren entre los ciclos. Otras herramientas como Hudson o CruiseControl podrían hacer más opciones de progtwigción de lujo.

La herramienta debe tener buenos valores pnetworkingeterminados pero permite el control opcional.

  1. ¿Qué repos? origen por defecto.

  2. ¿Qué twigs? todos por defecto.

  3. ¿Qué herramienta? por defecto, un file ejecutable que debe ser proporcionado por el usuario llamado "buildtest", "buildtest.sh" "buildtest.cmd", o buildtest.exe "en la carpeta raíz del repository.

  4. ¿Demora de bucle? ejecute una vez por defecto con la opción de repetir después de un número de segundos entre iteraciones.

Escribí una herramienta que llamé git test-sequence hace un time para hacer exactamente esto.

Estaba pensando en bloguear sobre eso porque un amigo me decía que le había ahorrado muchísimo trabajo esta semana.