2012-02-16 3 views
22

Интересно, есть ли способ переместить Changelist, который был создан для редактирования в/main/в ветку/dev/branch?Perforce - переместить отложенную ленту из главной ветки в филиал?

У меня есть шесть таких участников с большим количеством файлов в них. Я отложил все файлы и хотел бы переместить их в филиал, чтобы продолжать работать там. Я бы предпочел сделать это прямо в P4V, если это возможно.

Я использую P4V 2011.1 с сервером 2010.2 P4.

+0

Связанные вопрос: http://stackoverflow.com/questions/300160/can-i-integrate-checked-out-files-into- а-разный Гис-на-Perforce. – gdw2

ответ

1

Я считаю, что вы можете щелкнуть правой кнопкой мыши отредактированный файл и выбрать Rename/Move....

Если это не сработает, вам, вероятно, придется использовать командную строку и сделать p4 move -f old_file new_file и перейти в другую ветку.

Примечание: для чего это стоит, это работает для ветвей, но не потоков.

+1

К сожалению, когда я пытаюсь переместить файл в ветку с помощью этого метода, я получаю сообщение «уже существует в депо». –

+0

@ MartinSchulze, вот чего я боялся. В командной строке здесь находится '-f', но не знаю, есть ли способ сделать это в p4v. – Chance

0

Я не пробовал это сам, но я предположил бы, что это должно быть возможно:

  1. Изменения клиента в рабочее пространство, которое содержит отображение для филиала назначения
  2. Выберите ожидающие и unshelve списка изменений его (или вызвать p4 unshelve -s <number> из командной строки

из инструкции p4:

A successful unshelve operation places the shelved files on the user's 
workspace with the same open action and pending integration history as 
if it had originated from that user and client. 
+2

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

-1
  1. представить его на /main/
  2. интегрировать в /dev/branch/ список изменений
  3. отмотки или отката список изменений на /main/

Это позволяет разрешать конфликты, если таковые имеются. Недостаток заключается в том, что резервное копирование списка изменений на /main/ не очень красиво.

+0

Если вы отмените изменение на основном, разве это не изменит историю интеграции? Иными словами, вы ожидаете, что в ветке есть неинтегрированные изменения, которые еще не находятся в главном, но с точки зрения Perforce, в основной части нет неотстегнутых изменений, которые еще не находятся в отрасли. –

+0

Я дал -1 из-за причины выше. Я действительно пробовал это, и это может привести к неожиданному поведению. Когда вы интегрируете обратно в основную часть, изменений там не будет. – Ykok

18

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

the documentation Описание: -b и -S.

+0

Можете ли вы привести пример и как использовать -b? В документации упоминается только флаг -b! Я пытался несколько вариантов, и это не работает, говоря, что неизвестная ветка '/ dev/branch' – Shervin

+2

Найдена. Для записи -b должно быть задано отображение ветки из отложенной ветви в ветку, мы хотим, чтобы список изменений был удален. Вот как создать сопоставление: http://www.perforce.com/perforce/doc.current/manuals/p4v/Managing_branch_specifications.html – Shervin

+0

@Shervin dead link :-( – user234461

0

Вы также можете использовать «p4 move -f/main/.../dev/branch/...», чтобы выполнить это.

  1. убедитесь, что единственными редактируемыми файлами, которые у вас есть в/main/..., являются те, которые вы хотите переместить. Поместить и переустановить файлы в любом другом списке изменений
  2. Командная строка: «p4 move -f/main/.../dev/branch/...»
  3. файлы в наборе изменений теперь включены/dev/branch отмечены как требующие Resolve
  4. Resolve каждый файл так же, как вы бы обычный конфликт