Perforce: Как найти оригинальный номер списка изменений - PullRequest
3 голосов
/ 22 декабря 2010

Списки изменений в исполнителе нумеруются при подаче.Так, например, когда список изменений был создан, он будет пронумерован 777, но при представлении списка изменений он будет перенумерован, чтобы сказать 790.

Мой вопрос: как мне получить новый номер CL (790), если язнаете старый номер CL 777 или наоборот?

Ответы [ 6 ]

5 голосов
/ 05 января 2011

Если вы действительно хотите получить оригинальный номер списка изменений, который можно получить из Perforce без необходимости вставлять оригинальный номер списка изменений в описание. Вы можете использовать параметр командной строки -ztag, чтобы получить его. И вы можете получить это только с помощью команды «изменения» (насколько я знаю):

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

Как указывалось, это, вероятно, не так полезно. Тем не менее, я хотел отметить, что это возможно.

5 голосов
/ 22 декабря 2010

Единственный способ, которым я могу придумать, - это добавить исходный номер списка изменений как часть поля описания списка изменений.Во-первых, вам понадобится скрипт для хранения исходного номера списка изменений:

#!/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);

Сохраните его как origid.pl на сервере Perforce с установленным исполняемым битом.Затем настройте триггер с помощью p4 triggers.

Triggers:
    add_origid change-submit //depot/... /usr/bin/origid.pl %change%
.
4 голосов
/ 09 октября 2013

В версии 2012.1 Perforce введен аргумент -O (заглавная) в описании p4, что позволяет запрашивать список изменений по его оригинальному номеру (перед перенумерацией в p4 submit).

Я нахожу это очень полезным, так как я часто веду записи о наборе изменений перед его отправкой, а затем забываю отметить, к чему он был перенумерован при отправке.

Так что, если у меня есть заметка, в которой говорится об изменении 12300, теперь я могу увидеть, к чему это относится, набрав:

p4 describe -s -O 12300

и, имея Perforce, скажи мне:

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

Упомянутый ранее метод ztag можно использовать для поиска старого номера списка изменений для отправленного изменения:

> p4 -ztag describe -s 12345 | grep oldChange
... oldChange 12300
1 голос
/ 15 мая 2015

Добавление к ответу Эрика Миллера, потому что я не могу комментировать (недостаточно очков):

просто испустить 1 число

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

, например

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

или, если вы хотите посмотреть много чисел, это выведет карту new old в каждой строке (может быть полезно с командой "join"). Если старого коммита нет, то он заново генерирует новый коммит.

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;'

Я пытался избегать использования расширений GNU для sed.

0 голосов
/ 22 октября 2018

Может быть немного элегантнее, если вы используете модуль P4 Python.

т.е.

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.

Приветствия

0 голосов
/ 22 декабря 2010

Если вы не сделаете что-то похожее на то, что Тим предполагает, что старый номер списка изменений будет потерян при отправке.

Номера списка изменений являются временными до тех пор, пока вы фактически не отправите.Поэтому, если вы создадите новый список изменений (скажем, 777), а затем решите удалить его, следующим списком изменений будет 778.

...