Perforce Checkout Macro para XCode4
macros (4)
Me gustaría configurar una macro en XCode 4 para obtener el archivo actual de Perforce. ¿Cómo puedo hacer esto? No forzosamente me he integrado con mi proyecto y no deseo hacerlo. Esto es bastante fácil en Visual Studio pero no conozco el equivalente de XCode.
- Asegúrese de que la herramienta de línea de comandos ''p4'' esté instalada en ''/ usr / local / bin /''.
- Verifique que sus variables de entorno Perforce estén configuradas correctamente. Utilizo un archivo ''perforce.rc'' en la raíz de cada espacio de trabajo del cliente con el nombre del cliente (P4CLIENT) y el puerto (P4PORT). No te olvides de P4USER, P4PASSWD, P4CONFIG, etc ...
- Cree la siguiente secuencia de comandos en su carpeta ~ / bin y asegúrese de que los permisos estén configurados para que sea ejecutable (755 debería funcionar).
- Ve a Preferencias en Xcode y selecciona "comportamientos".
- Desplácese hacia abajo para "Desbloquear archivo"
- Desplácese hacia abajo un poco más y seleccione la casilla de verificación junto a "Ejecutar"
- Elija "Elegir secuencia de comandos ..." y apúntelo al siguiente script:
xcodeunlock.sh
#!/bin/bash
# Xcode4 doesn''t setup the environment
source ~/.bashrc
# Delete the URL part from the file passed in
fn=${BASH_ARGV#file://localhost}
echo "fn=" $fn
if [ -a ${fn} ]; then
res=$(/usr/local/bin/p4 edit ${fn})
# TODO: Report the status back to the user in Xcode
# This output goes to the console.
echo $res
else
echo "FnF" ${fn}
fi
Una vez que esté configurado correctamente, desbloquear un archivo en Xcode debe ejecutar este script e intentar extraer el archivo. Desafortunadamente, cualquier salida va a ''/var/log/system.log''. No estoy seguro de cómo notificar a Xcode 4 de una falla en este script.
Acabo de enterarme de esto en Perforce.com como su medio para hacer que esto funcione. Lo intenté, y es bastante bueno.
http://answers.perforce.com/articles/KB/2997
Según el comentario, también funciona en Xcode 5.
¡Y ahora está probado y funciona en Xcode 6!
EDITAR: Si eso no funciona, y estás usando OS X Mavericks, este chico arregló el script para seguir trabajando. Solo asegúrese de que el script haga referencia a p4 correctamente. Tuve que cambiarlo de /usr/local/bin/p4
a /usr/bin/p4
.
Es enloquecedor intentar que XCode funcione con Perforce. Aquí hay una solución que se me ocurrió que es:
- Rápido para configurar
- Fácil de grabar en su memoria muscular para que no tenga que pensar en verificar los archivos
- No requiere ningún tipo de mouse en absoluto
Configuración única de la siguiente manera:
- Descargue e instale la aplicación gratuita "DTerm" de Decimus Software.
- Asegúrese de tener instalada la herramienta de línea de comandos de Perforce. Escriba "p4" en el indicador de la ventana del terminal y vea si reconoce este comando. Si no es así, debe dirigirse al sitio web de Perforce y buscar y descargar lo que actualmente llaman "El cliente de la línea de comandos de Perforce (P4)". No hay instalador; solo guárdalo desde tu navegador directamente en
/usr/bin
(o lo que sea) y haz una chmod + x en él. Para notas oficiales de configuración, y si necesita hacer algún truco de variable de entorno personalizado, consulte esta nota técnica .
Una vez que haya hecho esto, digamos que está en XCode y está viendo un archivo de código fuente que desea verificar. Aquí está el rigamarole:
- Haga que el archivo se muestre en el editor de XCode activo
- Hit
Shift Command Enter
para obtener una ventana DTerm - Escriba
p4 edit
y luego presioneShift Command V
para pegar el nombre del archivo activo y presione regresar - Perforce comprueba el archivo y DTerm le muestra el estado / errores.
- Pulse ''escape'' para cerrar la ventana DTerm
- Comience a hacer sus cambios en el archivo en XCode. XCode puede decir (erróneamente) que el archivo es de solo lectura, porque es tonto y no es consciente de que se ha hecho de solo lectura a lectura-escritura, por lo que debe pulsar Permitir edición. No confié en esto al principio y lo verifiqué varias veces, pero ahora tengo fe ciega de que está haciendo lo correcto.
No he configurado esto desde hace un tiempo, así que avíseme si tiene problemas técnicos y actualizaré mi información aquí para que sea lo menos dolorosa posible. Pero de lo contrario, esta es la mejor solución que he encontrado.
Lo más cercano que puedo pensar es en un servicio, por lo que parece que Xcode 4 Perforce Services podría hacer el trabajo. Aunque no lo he probado personalmente. Me encontré con esto en esta pregunta .