Pregunta

En las listas de cambios forzosamente podrían ser numeradas en la presentación. Así, por ejemplo, cuando se creó la lista de cambios que se numera 777, pero en la presentación de lista de cambios que obtendría renumerado decir 790.

Mi pregunta es ¿cómo puedo obtener el nuevo número de CL (790), si conozco el antiguo número CL 777, o viceversa?

¿Fue útil?

Solución

Si realmente desea que el número de lista de cambios original, que se puede recuperar a partir de Perforce sin tener que incrustar el número de lista de cambios original en la descripción. Puede utilizar la opción de línea de comandos -ztag para llegar a ella. Y sólo se puede llegar a ella a través de comandos los 'cambios' (por lo que yo sé):

d:\sandbox>p4 submit -c 24510
Submitting change 24510.
Locking 1 files ...
edit //depot/testfile.txt#2
Change 24510 renamed change 24512 and submitted.

d:\sandbox>p4 -ztag changes -m1 //depot/testfile.txt
... change 24512
... time 1294249178
... user test.user
... client client-test.user
... status submitted
... oldChange 24510
... desc <enter description here>
<saved

Como se señaló, probablemente no es tan útil. Sin embargo, yo quería que tener en cuenta que es posible llegar a ella.

Otros consejos

La única manera que puedo pensar es añadiendo el número de lista de cambios original como parte del campo de descripción de cambios. En primer lugar, necesitará un script para almacenar el número de lista de cambios originales:

#!/bin/env perl
$id = $ARGV[0];
open (CHANGE_IN, "p4 change -o $id|");
open (CHANGE_OUT, "|p4 change -i $id");
while (<CHANGE_IN>)
{
    if (/^Description:/ and not /ORIGID/)
    {
        s/(^Description:)(.*)$/$1 ORIGID $id. $2/;
    }
    print CHANGE_OUT $_;
}
close (CHANGE_IN);
close (CHANGE_OUT);

Guardar esto como origid.pl en el servidor Perforce con el bit ejecutable. A continuación, configurar un disparador con p4 triggers.

Triggers:
    add_origid change-submit //depot/... /usr/bin/origid.pl %change%

Versión 2012.1 del Perforce introdujo el -O (capital oh) argumento para describir p4, que le permite consultar una lista de cambios por su número original (antes de ser renumerado por presentar p4).

Esto me parece muy útil, ya que a menudo me encuentro tomando notas acerca de un conjunto de cambios antes de su presentación, y luego olvidarse de tener en cuenta lo que pasó a ser el de presentación.

Así que si tengo una nota a hablar del cambio 12300, ahora puedo ver lo que se refiere a escribiendo:

p4 describe -s -O 12300

y tener Perforce dime:

Change 12345 by me@myhost on 2013/10/31 00:00:00

    Fix that thing I wrote that note about

Affected files ...

    ... //Proj/MAIN/foo.c

El método ztag se mencionó anteriormente se puede utilizar para encontrar el de edad número de lista de cambios de un presentada Cambio:

> p4 -ztag describe -s 12345 | grep oldChange
... oldChange 12300

La adición a la respuesta de Eric Miller, porque no puedo comentario (no suficientes puntos):

para simplemente emitir la 1 número

p4 -ztag describe $ORIG | sed -e 's/^\.\.\. oldChange //;t-ok;d;:-ok'

por ejemplo.

OLD=$(p4 -ztag describe $ORIG | sed -e 's/^\.\.\. oldChange //;t-ok;d;:-ok')

o si desea buscar muchos números, esto dará salida a un mapa de new old en cada línea (puede ser útil con el comando "unir"). Si no hay una edad confirma, entonces se vuelve a emitir la nueva confirmación.

p4 -ztag describe 782546 782547 ... | sed -e '${x;p};s/^\.\.\. change //;t-keep;b-next;:-keep;x;/./p;g;G;s/\n/ /;x;d;:-next;s/^\.\.\. oldChange //;t-ok;d;:-ok;H;x;s/ .*\n/ /;x;d;'

He intentado evitar el uso de extensiones de GNU de sed.

A menos que hagas algo así como Tim sugiere el número de la lista de cambios de edad se pierde en la presentación.

Cambiar números de la lista son sólo temporales hasta que realmente envía. Así que si se crea una nueva lista de cambios (por ejemplo 777) y luego decide eliminarlo, la siguiente lista de cambios se crea será 778.

Puede ser un poco más elegante si utiliza el módulo P4 Python.

es decir.

import P4
p4 = P4.P4()
p4.connect() # having a valid p4 workspace/connection is on you :)

c = p4.run_describe('969696') # describe a Submitted, renumbered changelist, i.e. 969696

old_pending_cl_number = c['oldChange'] # print out prior/pending CL# if this exists.

Saludos

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