remove - Establecer la versión del paquete Xcode para git hash
git tags best practices (4)
Escribí un guión mucho más corto para esto. Bash puede realizar la tarea; No hay necesidad de otros intérpretes.
En Xcode, quiero establecer la versión del paquete del proyecto en el hash git, para crear un enlace único entre una revisión y una compilación.
(He visto varias publicaciones sobre este tema que aumentan el número de compilación para cada compilación, pero para mí esto parece excesivo, y me gustaría tener un número de compilación al que los evaluadores puedan referirse cuando la respuesta del remitente).
Agregué lo siguiente como un script de ejecución en fases de compilación:
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion `git rev-parse --short HEAD`" *.plist
Y luego leí la versión del paquete en el código con:
[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
Sin embargo, entonces el nuevo número de revisión no aparece en el código hasta la siguiente compilación. Supongo que esto se debe a que el compilador ya ha leído el archivo plist cuando se ejecuta mi script.
Además, dado que el plist se cambia con la cadena de revisión después de comprometerse con git, esto causa una diferencia molesta en el proyecto, así que quizás no sea tan inteligente después de todo.
Una alternativa sería escribir el número de revisión en un archivo de texto (build.txt) que git ignora. Pero todavía me gustaría que el número de compilación del proyecto siga a git también.
Alguien sabe una manera brillante de hacer esto?
Ha habido bastantes maneras de hacer esto.
Solía ejecutar un script de compilación posterior para inyectar el sha en el paquete:
https://gist.github.com/208825
Pero hay un método más moderno en el blog Cocoa is my Girlfriend http://www.cimgf.com/2011/02/20/revisiting-git-tags-and-building/
Necesitará instalar PlistBuddy
para usar este método.
El método que utilizo es establecer el script como la última fase de compilación y realizar los cambios en el directorio de compilación de destino. En otras palabras:
BUILD_NUMBER=`git rev-parse --short HEAD`
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $BUILD_NUMBER" "${TARGET_BUILD_DIR}"/"${INFOPLIST_PATH}"
Por lo tanto, en el repositorio, el valor debe ser un valor ficticio como 0, y se sobrescribirá cada vez. Esto significa que el número de compilación actual solo estará disponible después de la compilación.
https://gist.github.com/966838 es un script corto de bash que cumple con el requisito de Apple de que CFBundleVersion sea una cadena con un aumento monótono .