Как проверить полку perforce в списке изменений, в котором она была отложена?

У меня есть полка perforce, это CL 1000. Ее поставил кто-то другой на какой-то неизвестный CL X.

Я нахожусь в CL 2000. Я хотел бы синхронизироваться с тем, что есть X, и удалить 1000, чтобы мой код был точно таким же, как когда он был отложен. Как мне это сделать?


person idbrii    schedule 13.09.2011    source источник


Ответы (1)


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

Тем не менее, они, вероятно, были синхронизированы с одним моментом времени, и вы можете экстраполировать это по номерам версий файлов на их полке.

$ p4 files @=1000
//depot/foo/bar.txt#3 - edit change 1000 (text)
//depot/baz/quux.c#5 - edit change 1000 (text)

Номера редакций после имен файлов указывают на редакцию каждого отложенного файла, который пользователь синхронизировал перед открытием для редактирования.

Затем вы можете запустить p4 files с каждым из путей к файлам и ревизиями, чтобы получить номера изменений:

$ p4 files //depot/foo/bar.txt#3 //depot/baz/quux.c#5
//depot/foo/bar.txt#3 - edit change 983 (text)
//depot/baz/quux.c#5 - edit change 998 (text)

Выберите самое большое число изменений из второй команды и попробуйте синхронизировать с ним ваш клиент.

Предупреждения к вышеизложенному

Даже если мы предположим, что они синхронизировались с одним моментом времени, приведенное выше не является надежным. Это только говорит нам, что они синхронизировались с изменением после или включая 998 и до 1000.

Допустим, они синхронизировались, чтобы изменить 999. Их клиентское рабочее пространство могло выглядеть так:

$ p4 have
//depot/an/otherfile#7 - /home/user/a/an/otherfile
//depot/foo/bar.txt#3 - /home/user/a/foo/bar.txt
//depot/baz/quux.c#5 - /home/user/a/baz/quux.c

Предположим далее, что это было изменение 999, которое обновило другой файл до версии 7, и это изменение 999 содержало только другой файл.

Поскольку otherfile никогда не откладывался на полку, а последняя отложенная версия, указанная выше, относится к изменению 998, на основе полки нельзя сделать вывод о том, было ли синхронизировано рабочее пространство клиента с изменением 998 или изменением 999.

Еще большая оговорка заключается в том, что все это разваливается, если они синхронизируют разные файлы с разными номерами изменений, но обычно люди этого не делают.

person daxelrod    schedule 14.09.2011
comment
Пожалуйста, дайте мне знать, если вам также нужны инструкции для P4V. - person daxelrod; 14.09.2011
comment
Большой! Я могу написать это: p4 files @=$1 | grep -e "integrate change" -e "edit change" | sed -e"s/\(#.[^ ]*\).*/\1/" | xargs p4 files | sed -e"s/.*change \([0-9]*\).*/\1/" | sort -u | tail --lines=1 - person idbrii; 15.09.2011
comment
Хотя я предполагаю, что они синхронизировались после внесения каких-либо изменений в файлы в отложенном списке изменений, я не смогу сказать. (Часть CL 1000 зависит от изменения в //depot/buzz.c, которое они обновили, но не изменили.) Это то, что вы имели в виду под последним предложением? - person idbrii; 15.09.2011
comment
Правильный. Я уточнил последнее предложение и расширил его до Предостережений к предыдущему разделу. - person daxelrod; 15.09.2011