как обнаружить использование повторного открытия Perforce для редактирования из скрипта

Я работаю над сценарием для взаимодействия с Perforce, который, помимо прочего, должен понимать ожидающие списки изменений. Для этого я использую «p4 describe» и «p4 opened», которые довольно просты. Например, файл, открытый для редактирования, выглядит следующим образом (из открытого p4):

//source/stuff/things.h#1 add default change (text)

Что я не могу понять, так это как определить случаи, когда пользователь разветвлял файл, а затем использовал команду «Открыть для редактирования» для этого файла (что равносильно использованию «p4 edit» на файл для разветвления) перед его отправкой. То же самое касается интеграции файла с последующим использованием «Повторно открыть для редактирования» перед отправкой интеграции. В случае ветки файл отображается как «добавить» без указания на то, что также существует ветвь (так что приведенный выше пример может быть либо истинным добавлением, либо повторно открытой веткой). В случае интеграции это отображается как «редактировать». В обоих случаях после отправки изменения я вижу, что файл был разветвлен / интегрирован, но мне нужно иметь возможность сделать это для ожидающих изменений. Теоретически я бы надеялся увидеть что-то вроде этого, где things.h разветвляется и редактируется из thangs.h:

//source/stuff/things.h#1 add default change (text)
  branch from //source/other/thangs.h#42

Кто-нибудь знает, как это сделать? Я также упомяну, что я использую старую версию Perforce (с 2004 года), поэтому, возможно, это выполнимо в более новых версиях, и мне просто нужно обновить свое программное обеспечение.


person Charlie    schedule 03.06.2009    source источник


Ответы (2)


Не думаю, что это возможно при выдаче «повторно открыть для редактирования». Как вы уже указали, команда reopen изменит статус файлов на другое. Я провел локальный тест (у меня 2008.2). Похоже, есть некоторые изменения в способе, которым perforce сообщает о статусе добавления / редактирования файлов с момента вашей версии, но то, что вы пытаетесь сделать, все еще кажется невозможным

d:\sandbox\ctg_test>p4 integ test.txt test_branch.txt
//ctg_test/test_branch.txt#1 - branch/sync from //ctg_test/Test.txt#1,#15

d:\sandbox\ctg_test>p4 opened
//ctg_test/test_branch.txt#1 - branch default change (text)

Обратите внимание, что открытая команда теперь показывает «ветвь» для статуса файла вместо добавления, которое, я думаю, могло быть показано с вашей версией сервера. Но кикер:

d:\sandbox\ctg_test>p4 edit test_branch.txt
//ctg_test/test_branch.txt#1 - reopened for add

d:\sandbox\ctg_test>p4 opened
//ctg_test/test_branch.txt#1 - add default change (text)

Я попытался посмотреть с параметром -ztag, чтобы узнать, была ли предоставлена ​​дополнительная информация:

d:\sandbox\ctg_test>p4 -ztag opened
... depotFile //ctg_test/test_branch.txt
... clientFile //client-mark.allender/ctg_test/test_branch.txt
... rev 1
... action add
... change default
... type text
... user mark.allender
... client client-mark.allender

p4 fstat тоже не помог.

person Mark    schedule 03.06.2009
comment
Крысы, я боялся, что это может быть ответ. Надеюсь, кто-то еще может знать о какой-то магии, иначе мне может просто не повезти. - person Charlie; 04.06.2009

"p4 разрешено" делает почти то, что вы хотите , но, к сожалению, новинка 2007.2.

[C:\dfp\Common\Code\Python]p4 opened foo.py
//buddha/Common/Code/Python/foo.py#1 - add default change (kxtext)

[C:\dfp\Common\Code\Python]p4 resolved foo.py
c:\dfp\Common\Code\Python\foo.py - branch from //buddha/Common/Code/Python/memdump.py#1,#30

Вероятно, вы не сможете обнаружить проблемы до того, как пользователь запустит «решить», но их придется решать перед отправкой.

person Paul Du Bois    schedule 23.10.2009
comment
Очень интересно - спасибо за информацию. Даже если это не работает с моей старой версией, надеюсь, это может помочь кому-то другому. - person Charlie; 24.10.2009
comment
Именно это и делают наши скрипты. Файлы, открытые для редактирования, сравниваются с выводом p4 resolved, поэтому были ли они разветвлены и откуда. Я не уверен, что есть лучший способ сделать это. - person prestomation; 17.12.2009