Как просмотреть Shelved P4 Changes?
Один из членов нашей команды (расположенный в другом регионе) отложил изменения в P4 со списком изменений 1234.
Теперь, если я хочу посмотреть, какие файлы модифицируются, каковы изменения, как я могу это сделать?
Какую команду P4 я должен использовать, чтобы увидеть изменения, внесенные членом нашей команды?
9 ответов
p4 describe -S 1234
Следует подвох, см. документацию по описанию.
Чтобы просмотреть содержимое файла, вы должны отложить файлы в рабочее пространство (при условии, что у вас есть рабочее пространство для того же проекта, над которым работает ваш коллега).
Создайте новый (пустой) список изменений с p4 change
(результат, например, 2345), затем используйте p4 unshelve
( документ), чтобы получить измененные файлы в вашу рабочую область:
p4 unshelve -s 1234 -c 2345
Если вам больше не нужны измененные файлы в вашем рабочем пространстве, вы можете p4 revert -c 2345
их.
Используя GUI, перейдите в Pending и удалите все фильтры, кроме пользователя, где вы поместите идентификатор другого разработчика. Оттуда вы сможете увидеть ее Changelists, в том числе те, которые хранят файлы на полках. Щелкните правой кнопкой мыши значок Shelved Files и выберите Unshelve. Вам нужно иметь активную рабочую область, включающую файлы, которые вы пытаетесь отменить.
Используя клиентский интерфейс, нажмите Ctrl+G. Диалоговое окно появляется. Выберите Список изменений в выпадающем списке и введите номер списка изменений.
Давайте предположим, что список изменений 123456 - это рассматриваемый отложенный список изменений. Как упоминалось в предыдущем ответе, список файлов, связанных с этим списком изменений, можно найти в p4 describe -s <changelist>
команда. Вот так:
$ p4 describe -s 123456
Change 123456 by john.doe@JohnsBranch on 2013/10/24 15:38:10 *pending*
[Shelving my changes for Jane.]
Fix memory corruption caused by uninitialized pointer.
Affected files ...
... //depot/branches/JohnsBranch/kernel/vm/pageutils.c#1 edit
Как только вы знаете файл (ы), о котором идет речь, есть несколько способов разграничить файлы без соответствующей рабочей области. Метод № 1 заключается в использовании p4 print
:
$ p4 print -q //depot/branches/JohnsBranch/kernel/vm/pageutils.c#1 > /tmp/old
$ p4 print -q //depot/branches/JohnsBranch/kernel/vm/pageutils.c@=123456 > /tmp/new
$ diff /tmp/old /tmp/new # Or use kdiff3, tkdiff, etc.
...
<diff output here>
Другой метод заключается в использовании p4 diff2
:
$ p4 diff2 //depot/branches/JohnsBranch/kernel/vm/pageutils.c#1 //depot/branches/JohnsBranch/kernel/vm/pageutils.c@=123456
...
<diff output here based on Perforce server's diff algorithm>
Оба метода могут быть легко включены в язык сценариев выбора.
Если вы хотите увидеть фактическое содержимое файлов, вы можете использовать:
p4 print <file>@=<shelved_change>
"@" Означает "посмотреть на отложенное изменение", а "@" означает "посмотреть на изменение".
Решение jhwist хорошо, если вы хотите посмотреть различия в файлах.
Если вы хотите видеть только отложенные файлы, используйте p4 describe -sS 1234
,
Строчные буквы s
ограничивает вывод включением файловых различий.
Если вы хотите видеть только список файлов внутри ChangeList (будь то полка, ожидающий или отправленный CL), без дополнительных данных, получите результат:
p4 describe -S 12345 | grep -oP '(?=//).*(?=#)'
В пользовательском интерфейсе P4V выберите
Search - > Go To
затем выберите тип списка изменений (в вашем случае "Ожидание списка изменений"), введите номер списка изменений и нажмите "ОК".
Вы можете попробовать
p4 -ztag describe <changeno>
Описание содержит строку под названием «... отложено», если оно отложено.