¿Cómo puedo prevenir la presentación de un vacío de Perforce changelist de ser un error?

StackOverflow https://stackoverflow.com/questions/5032688

Pregunta

Intentar presentar un changelist con los archivos no es considerado por Perforce a ser un error (p4 submit ... devuelve el código de salida 1).Esto hace que un periódico de la integración de construir un error en nuestro servidor de compilación (estamos utilizando Zutubi de Pulso del sistema); en este caso prefiero tener la acumulación de éxito, posiblemente con una advertencia.

El pulso tiene código de salida de la reasignación de funciones, pero Perforce no aparece para eliminar la ambigüedad entre la falta de presentación de un vacío changelist y cualquier otro presentar falla (por ejemplo, una validación de desencadenar el fracaso, que me ¿ quiere fallar la construcción).

El obvio (pero, en mi mente, poco elegante) solución que viene a la mente es envolver la ejecución de p4 submit en un archivo por lotes que se comprueba primero si el destino changelist es vacía por conteo de líneas de salida de p4 opened -- o simplemente el análisis de la salida de p4 submit el "no" archivos de mensaje y regresar con éxito desde el archivo por lotes.

Hay mejores técnicas para el manejo de este que no estoy viendo?

¿Fue útil?

Solución

Hay probablemente nada bueno técnicas sólo con Perforce, si estoy en la comprensión de su problema correctamente.El problema, como ya hemos visto, es que los códigos de retorno de perforce línea de comandos se ejecuta son ambiguos.Es una presentación de un vacío changelist realmente un error?Tal vez, tal vez no puede depender de a quién le preguntes.

Es no es aconsejable mirar los códigos de retorno de 'p4' comandos.Su mejor apuesta como la que ustedes han propuesto es analizar la salida del comando y, a continuación, hacer lo que usted necesita para desde allí.

La mayoría de los comandos de apoyo a la ztag opción (consulte 'p4 ayuda de uso"), que se podría hacer análisis de la salida un poco más fácil, dependiendo de lo que desee hacer.Si tu caso, es probablemente suficiente para sólo buscar el texto en la salida y, a continuación, decidir qué hacer a partir de ahí.

Otros consejos

Antes de intentar enviar un changelist, usted podría primer intento de eliminar.

p4 change -d ###

Esta operación sólo tendrá éxito si el changelist es vacío, así que no la envía (sólo han eliminado).Si falla, hay archivos en el changelist, así que adelante y presentar los mismos.

Sin embargo, si usted usa los trabajos, esto no funciona para usted, porque usted no puede eliminar un changelist que tiene un trabajo apegado a ella, incluso si está vacío.

Yo lo hice, finalmente, terminar el análisis de la salida en un archivo de proceso por lotes, mediante algo parecido a esto:

for /f "delims=" %%I in ('p4 submit -d "<message>" 2^>^&1 1^>NUL') do    
set SUBMIT_OUTPUT=%%I
if "%SUBMIT_OUTPUT%"=="No files to submit from the default changelist." exit /b 0

Esto es necesario ya que p4's "no hay archivos" mensaje es escrito a stderr normalmente.Si la salida es el mensaje que me consideran "seguros" yo salir con un cero el código de salida, de lo contrario el script seguirá con cualquier nivel de error fue establecida por el p4 comando.

Tenga en cuenta que el "no hay archivos" mensaje para un numerada changelist es ligeramente diferente, si usted está usando eso.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top