Как перенести отложенный список изменений в другую ветку до Perforce 2013?

Используя Perforce Server 2012.2/538478, как я могу переместить файлы из магистрали в другую ветвь?

При попытке сделать это я получаю:

//filename... (not mapped to your workspace view)

В Perforce 2013 я обнаружил, что эта команда убрать с полки действительно оказаться полезным:

p4 unshelve -s <changlist#-with-shelved-files> -S //depot/streamname

Но с версией, которую я использую в настоящее время, я не нашел ничего, что помогло бы мне решить эту проблему.

Какие-либо предложения?


person Yair Nevet    schedule 06.01.2014    source источник
comment
Почему бы не обновиться до 2013.1? Это действительно мощная функция, и ее стоит обновить.   -  person Bryan Pendleton    schedule 06.01.2014
comment
Потому что это не зависит от меня...   -  person Yair Nevet    schedule 06.01.2014


Ответы (7)


К сожалению, без обновления до 2013.1 и получения улучшенной операции извлечения из полки вам придется вручную копировать данные:

  • раскладывая в багажнике, отмечая конкретные файлы, которые изменились
  • p4 edit файлы в другом потоке/ветке
  • вручную скопируйте незавершенные файлы в другой поток/ветвь (вы не можете использовать для этого p4 copy или p4 integrate, потому что они не зафиксированы в магистрали
  • протестировать и зафиксировать в другой ветке
person gaige    schedule 12.01.2014

Вы смотрите на правильную команду, но, возможно, не на те параметры. Вот как я его использую:

p4 unshelve -s 77655 -b MY_BRANCH_SPEC

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

Крайне важно убедиться, что и указанное сопоставление ветвей, и текущее сопоставление рабочей области содержат как исходный, так и конечный файлы, иначе вы получите ошибку «файл не сопоставлен».

person ninesided    schedule 06.01.2014
comment
Как я уже указал, я работаю с Perforce Server 2012.2/ 538478, а не версии 2013 года, на которую вы к сожалению ссылаетесь. - person Yair Nevet; 06.01.2014
comment
ах, моя ошибка - я не думаю, что то, что вы хотите, возможно, так как нет возможности сопоставить старую ветку с новой веткой в ​​2012.2 - person ninesided; 06.01.2014

Другие ответы у меня не сработали, вот что я сделал, используя perforce 2014:

  1. Отредактируйте свое текущее рабочее место так, чтобы в нем отображались оба //depot/product/B1/... и //depot/product/B2/... (не друг на друга, а на ваше рабочее пространство, как обычные сопоставления)
  2. В P4V перейдите в «Сопоставления ветвей» (меню «Вид» -> «Сопоставления ветвей»).
  3. Ctrl+N, чтобы начать новое сопоставление (или щелкните правой кнопкой мыши список и выберите "Новое сопоставление ветвей...")
  4. В разделе «Отображение ветвей» укажите имя, например B1_TO_B2.
  5. Замените сопоставления в разделе «Вид», например,

    //depot/product/B1/...       //depot/product/B2/...  
    
  6. OK
  7. Создайте пустой список изменений, в который будут помещены ваши незавершенные файлы (иначе они перейдут в список изменений «по умолчанию»). Номер этого нового списка изменений будет ‹ TARGET_CL > в приведенной ниже команде.
  8. В командной строке запустите

    p4 unshelve -s <SOURCE_CL> -c <TARGET_CL> -b B1_to_B2
    
    • If it doesn't work, make sure the correct workspace is set in .p4config
  9. Теперь все, что вам нужно сделать, это разрешить файлы в ‹ TARGET_CL >
person yair    schedule 14.12.2014
comment
Ты спас меня, ЮГЕ. СПАСИБО. - person httpete; 08.06.2017

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

Assuming you have a shelved changelist 324426 in Branch B1 and want to unshelve it to Branch B2.

Я смог создать спецификацию ветки, а затем перенести список изменений в другую ветку. вот именно что я сделал:

1. Create a text file named branchSpec.txt, with the content below: set you own Branch name and View.

Branch:   B1_to_B2

View:
//depot/dev/main/B1/...       //depot/release/B2/...

2. p4 branch -i < branchSpec.txt (in target directory)
3. p4 unshelve -s 324426 -b B1_to_B2 (in target directory)

Виола, отложенные файлы в списке изменений 324426 в B1 теперь перенесены в B2 и готовы к отправке.

person yantaq    schedule 16.07.2014
comment
Ответ Янтака сработал для меня. Единственное предостережение: сначала создайте рабочее пространство для B2. Затем получите кодовую базу, соответствующую файлам в списке изменений, которые будут сняты с полки в B2. Затем выполните шаги, описанные выше. - person Sachin Shetye; 01.02.2016

Способ, как обойти это, находится в P4 2012:

  1. Вручную скопируйте и перезапишите ветку стволом
  2. Щелкните правой кнопкой мыши ветку в клиенте P4 и выберите "Согласовать автономную работу...".

Это позволит вам выбрать новые и измененные файлы и добавить их в набор изменений.

person Vedran    schedule 21.10.2016

Для этого вы можете использовать распаковку P4, но вы должны создать сопоставление ветвей, а именно A_to_B.

1] p4 снять с полки -s CL_NUM -b A_to_B

2] p4 add (файлы открыты для добавления)

3] p4 разрешение

Примечание. Не забудьте шаг 2. P4 не открывайте их по умолчанию в целевой ветке. Вы можете подтвердить это с помощью «p4 open»

person yadu_sam    schedule 09.01.2019

Я думаю, что вам действительно нужно "p4 move -f". Это подробно объясняется здесь: p4 move -f: для чего это нужно< /а>

person Mihail Mihaylov    schedule 18.11.2014