Determinar si Git repo está limpio durante el script de compilation Ant

Estoy integrando algunos filters en mi script de compilation Ant, que agregan date de compilation, versión de progtwig y git head sha a los files fuente al empacar, sin embargo, no estoy seguro de cómo determinar si el repository fuente está "limpio", como- en si no hay cambios desde que HEAD se haya comprometido en la fuente actual a ser construida.

Para labelr el compromiso HEAD, estoy usando el objective git.revision hecho en esta pregunta: Cómo search el último hash de commit de git desde un script de compilation ant

Me gustaría hacer algo similar, pero indicar el estado del repository, es decir. "SOURCE: @ STATUS @" que se filtraría a: "SOURCE: CLEAN" / "SOURCE: DIRTY", o similar.

El simple hecho de ejecutar un command de git status en un exec de ant devuelve muchas cosas y hace que sea más difícil trabajar con él. hay una manera mas facil?

Mi forma preferida de abordar este problema es nunca cambiar uno de mis files fuente (bajo control de revisión). En su lugar, ANT crea un directory "build" o "target" que se agrega al file ".gitignore" para que a git no le importe su contenido.

 ├── build.xml ├── .gitignore ├── src │  ├── main │  │  ├── java │  │  └── resources │  └── test │  └── java └── build ├── classes ├── jars └── resources 

Las ventajas de este enfoque es:

  1. Cualquier file generado por la compilation será ignorado por git
  2. Simple para crear un objective "limpio" en ANT para actualizar el espacio de trabajo.

Un ejemplo de mi objective "limpio" estándar

 <target name="clean"> <deleted dir="build"/> </target> 

Para garantizar una compilation limpia, se ejecuta lo siguiente

 ant clean build 

Finalmente, si está usando un server de CI como Jenkins (y recomiendo encarecidamente que lo haga) a menudo hay soporte para complementos, por ejemplo:

  • Plugin de limpieza del espacio de trabajo

Proporciona funcionalidad para eliminar todo el espacio de trabajo del proyecto o los files seleccionados.

Espero que esto ayude.