Perforce: разница между Action и HeadAction в fstat?

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

Мой код в настоящее время работает хорошо, в основном я сделал следующее:

  • Фстат на папку
  • Iterate through the results and flag the records that fulfill both these conditions :
    • Revision != Head Revision
    • HeadAction == Редактировать

С учетом сказанного, правильно ли я использую HeadAction вместо Action в моих условиях? В чем разница между ними?

Согласно Перфорсу:

  • HeadAction : действие, предпринятое при ревизии заголовка, если оно находится в хранилище.
  • Действие: открыть действие, если оно открыто в вашей рабочей области.

По какой-то причине я не нахожу эти описания полезными.

Может ли кто-нибудь перефразировать эти ..?

Спасибо


person Hussein Khalil    schedule 18.03.2011    source источник


Ответы (2)


«headAction» — это действие в головной ревизии в хранилище — это означает, что это действие последней ревизии, отправленной в хранилище. Обычно это «добавить» для вновь добавленных (и отправленных) файлов, «редактировать» для файлов, которые были отредактированы и отправлены, или «удалить», когда файл был удален в начале (и снова отправлен). Здесь есть и другие варианты (например, «филиал», «интеграция» и т. д.).

«действие» — это то, что вы в данный момент делаете с файлом. Если вы открываете файл для «редактирования», действие будет «редактировать». Точно так же, если вы откроете файл для «удаления», действие будет «удалить». Если вы отправите свое изменение, действие станет headAction.

Вот небольшой пример. Я создал новый файл и отправил его. В депо была 1 ревизия. Это главное действие «добавить». Затем я отредактировал файл. Вы можете увидеть вывод fstat:

d:\projects\tools\test>p4 fstat new_file.txt
... depotFile //tools/test/new_file.txt
... clientFile d:\projects\tools\test\new_file.txt
... isMapped
... headAction add
... headType text
... headTime 1285014691
... headRev 1
... headChange 759253
... headModTime 1285014680
... haveRev 1

d:\projects\tools\test>p4 edit new_file.txt
//tools/test/new_file.txt#1 - opened for edit

d:\projects\tools\test>p4 fstat new_file.txt
... depotFile //tools/test/new_file.txt
... clientFile d:\projects\tools\test\new_file.txt
... isMapped
... headAction add
... headType text
... headTime 1285014691
... headRev 1
... headChange 759253
... headModTime 1285014680
... haveRev 1
... action edit
... change default
... type text
... actionOwner fred.flintstone

Если вы пытаетесь определить, не синхронизирована ли папка, то действительно кажется, что вам нужно смотреть только на «haveRev» и «headRev». Если headRev > haveRev, вы устарели. Если вам небезразлично, удаляется ли файл в начале, то, возможно, будет полезно взглянуть на headAction. Я думаю, у меня недостаточно информации о вашей проблеме, чтобы знать.

Во всяком случае, ХТХ.

person Mark    schedule 18.03.2011
comment
Отличный ответ, это именно то, что я хотел знать. Спасибо, это очень ценно. - person Hussein Khalil; 18.03.2011

Я не уверен в ваших точных потребностях, но если вы

p4 sync -n <folder_name>/...

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

person Chance    schedule 18.03.2011
comment
Используйте этот метод, Perforce уже отслеживает эту информацию. - person JasonMArcher; 19.03.2011