Perforce Changelist и команда полки

Я новичок в Perforce и только начал его использовать. После синхронизации моего кода с помощью команды $ p4 sync я начал редактировать несколько файлов.

  • $ p4 редактировать файл1
  • $ p4 редактировать файл2
  • $ p4 редактировать файл3

Эти файлы добавлялись в мой список изменений по умолчанию. Для сотрудничества с моей командой я хотел создать список изменений. Для создания списка изменений я выполнил $ p4 change и удалил "file1" из описания списка изменений. Теперь, когда я запускаю, $ p4 открывается. Это дает результат, аналогичный этому.

  • // депо / ... / file1 редактировать изменение по умолчанию (текст)
  • // депо / ... / файл2 редактировать по умолчанию 111 (текст + k)
  • // депо / ... / file3 редактировать по умолчанию 111 (текст + k)

Теперь у меня в голове следующие вопросы:

  • Над каким списком изменений я сейчас работаю, это по умолчанию или 111 ??
  • что означает (test + k)?
  • Когда я вношу изменения в файл2 и файл3, он синхронизируется со списком изменений 111, а когда я вношу изменения в файл1, он синхронизируется со списком изменений по умолчанию. Я очень не понимаю, как это происходит?
  • Еще одна вещь, о которой я смущен, это то, что если do $ p4 shelve исчезнет, ​​мои изменения будут применены повторно только тогда, когда я запустил команду unshelve для созданного списка изменений? Это похоже на применение git stash и git stash?

Будет здорово, если кто-то сможет подробно ответить на эти вопросы. Любые советы по использованию Perforce также будут большим подспорьем.

Заранее спасибо.


2 071
1

Ответ:

Решено

Я рекомендую руководство по Perforce - это Руководство пользователя Perforce. Вот раздел списков изменений:

https://www.perforce.com/perforce/r15.1/manuals/intro/chapter.working_in_perforce.html#working_in_perforce.working_with_files.changelists

Which changelist am i currently working on is it default or 111 ??

Оба! Оба они ожидают обработки списков изменений в вашем рабочем пространстве.

what is the meaning of (text+k)?

В скобках указано «тип файла». +k - это «модификатор типа файла», означающий, что ключевые слова (специальные слова, такие как $Id$, $Revision$ и $Author$ в этом файле, будут автоматически расширены до соответствующих значений при отправке.

When i make changes to file2 and file3 it is getting synced to changelist 111 and when i make changes to file1 it gets synced to default changelist . I am highly confused how is this happening ?

Пока еще ничего не «синхронизируется» - ожидающие обработки списки изменений - это просто контейнеры, которые ссылаются на разные файлы. Когда вы используете shelve или submit, тогда, файлы, связанные с этими списками изменений, будут отправлены на сервер и будут доступны другим клиентам. Поскольку shelve и submit являются операциями на уровне списков изменений, затрагиваются только файлы в этих списках изменений - в этом смысл наличия разных ожидающих списков изменений. У вас есть все ожидающие файлы в вашей рабочей области, но вы можете разделить, какие из них отправляются на сервер и в какое время (это немного похоже на отправку разных веток в git, но нет - вы можете делать это для каждой операции в Perforce. даже если вы не выполняете ветвление, потому что каждый файл версируется индивидуально, а не все дерево версируется как один атомарный большой двоичный объект).

Also one more thing i am confused about is if do $p4 shelve will my changes disappear and will be reapplied only when i run unshelve command for the changelist created ?? Is this similar to git stash and git stash apply ?

Нет, p4 shelve синхронизирует только отложенные изменения на сервере с локальными файлами в вашем рабочем пространстве - сам по себе он не изменяет ваше рабочее пространство. Эквивалент «спрятать» был бы для p4 shelve, а затем для p4 revert, чтобы стереть изменения рабочего пространства. shelve сам по себе немного больше похож на передачу git push в ветку - вы сохраняете свою локальную копию, но теперь она также находится на сервере (но не является частью «главной» истории). (Хотя это не совсем то же самое - честно говоря, если вы новичок в Perforce, я бы придерживался обычного старого «submit» в обычной старой ветке, поскольку это основной рабочий процесс. Совместное использование работы через полки требует гораздо большего количества ручного управления работают, поскольку каждая полка похожа на свою небольшую мини-ветку без управления версиями.)