¿Cómo puedo agregar hash git a mi aplicación Eclipse RCP Acerca de la página?

En el pasado, al usar mercurial con Visual Studio, solía agregar identificadores de sets de cambios mercuriales a mi aplicación para que cuando el usuario hiciera una Ayuda al respecto, enumerara todos los componentes y su revisión mercurial exacta . También registraría todos los ID de los sets de cambios en el file de logging de la aplicación cada vez que se iniciara. Este procedimiento incluso me permitió ver si una copy de trabajo particular se había modificado desde la última confirmación (la hg id mercurio de mercurial indica una copy de trabajo sucia añadiendo un + al final de la id del set de cambios que informa).

Esto fue increíblemente útil, ya que significaba que cada vez que un usuario reportaba un problema, podía build rápidamente la revisión que estaba usando. También podría decir cuándo la gente se coló rápidamente para solucionar un problema y no había confirmado los cambios ni me había contado al respecto.

Ahora quisiera replicar la misma installation en mi aplicación RCP alojada en git . Desafortunadamente, soy bastante nuevo en el desarrollo de aplicaciones git y Eclipse RCP, por lo que estoy un poco confuso acerca de si la misma técnica funcionaría.

En particular, no he podido averiguar cómo hacer el equivalente de hg id con git , cómo hacer que el sistema de compilation Eclipse llame a git para crear un file .gitignore d que contenga el id, para que pueda comstackrse en la aplicación / plug-in, o cómo get esta información en la página Ayuda> Acerca de.

Si has hecho esto, o algo similar, me gustaría algunos consejos sobre cómo lo hiciste. Alternativamente, me complacería escuchar cualquier sugerencia sobre maneras alternativas de lograr el resultado final que busco.


Con un poco de google-fu, leyendo detrás de las líneas y la experimentación, parece que git rev-parse HEAD o git rev-parse --short HEAD es probablemente el más cercano a un hg id , ¡ay !, no puedo encontrar una manera de indicar que la copy de trabajo no está limpia, por lo que parece que tendré que verificar el resultado de un git status --short y si no está vacío, añada un + al hash de confirmación manualmente.

Ahora solo necesito entender cómo hacer que estos commands se ejecuten desde el sistema de compilation Eclipse y dónde inyectar esta información para que aparezca en las páginas Acerca de.

No puedo hablar de la parte de esta pregunta, pero puedo, en cierta medida, en la parte de RCP. Dicho esto, has mencionado que no eres un fanático de la sustitución de palabras key. Lo aprecio, pero hasta donde sé, es una práctica muy común en todo el marco de compilation de RCP.

El dialog Acerca de se puede controlar utilizando un file about.properties, about.mappings y about.ini. El libro de la plataforma Rich Client habla de esto.

Lo que haría es hacer que tu compilation genere el file about.mappings con tu hashtag git.

¿Has mirado git describe?

http://linux.die.net/man/1/git-describe

Utilizo esta salida para una serie de proyectos diferentes. Le dará la label más cercana en el pasado, la cantidad de confirmaciones desde la label y algunos caracteres del hash.

Aquí hay un ejemplo de la página de manual: v1.0.4-14-g2414721

En este ejemplo, las partes son:

  • la label es 'v1.0.4'
  • ha habido 14 confirmaciones después de la label en esta twig
  • el prefijo hash es 2414721

Si la última confirmación está labelda, obtendrá solo el nombre de la label: v1.0.4

Hay muchas opciones útiles, pero las dos que son más importantes para mis proyectos son:

--tags: uso tags livianas, sin firmar, que no recogen de forma pnetworkingeterminada.

--match: si tiene diferentes types de tags, pero solo desea hacer coincidir las que comienzan con 'v'.

Desde el punto de vista del process, lo que hago para proyectos serios también es:

  1. Cambia la versión y count a un formatting rc o beta:

     tag v1.2-14 --> `1.3-rc14` or `1.3-beta14` 

    No puede comstackr 1.2 ya que está en el pasado, por lo que debe ser la construcción 14 de la próxima versión, que es 1.3.

  2. Antepone el nombre de la twig si es una twig especial (no maestra, etc.) Por ejemplo, "v1.2-14" en la twig "featurex" produciría:

     featurex-1.3-rc14 
  3. Aplique -modified o `-unsupported" si la compilation no tiene todo registrado. Esta es su key de que nunca podrá reproducirla.

      featurex-1.3-rc14-unsupported 
  4. Guarde el hash al final o en la siguiente línea en loggings o sobre pantallas. Normalmente pongo el hash completo en los loggings y featurex-1.3-rc14 (2414721) , pero el prefijo más pequeño es común: featurex-1.3-rc14 (2414721) Esto funciona muy bien con mi flujo de trabajo. Cuando fusiono la function en una twig de lanzamiento, el prefijo desaparece: 1.3-rc14 (2414721)

Cuando se completa la testing y la versión está labelda, el rc desaparece: 1.3 (2414721)