Как вернуть отложенный список изменений в другой филиал до 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
Но с версией, которую я использую в настоящее время, я не нашел ничего, чтобы помочь мне с этой проблемой.
Какие-либо предложения?
8 ответов
К сожалению, без обновления до 2013.1 и получения улучшенной небрежной операции вам потребуется вручную скопировать данные с помощью:
- небрежный в стволе, отмечая определенные файлы, которые изменились
p4 edit
файлы в вашем другом потоке / ветке- вручную скопируйте файлы без хранения в другой поток / ветку (вы не можете использовать
p4 copy
или жеp4 integrate
для этого, потому что они не совершены на стволе - проверить и зафиксировать в другой ветке
Другие ответы у меня не сработали, вот что я сделал с помощью Perforce 2014:
- Отредактируйте текущее рабочее место так, чтобы в нем отображались и //depot/product/B1/... и //depot/product/B2/... (не друг с другом, с вашим рабочим пространством, как обычные отображения)
- В P4V перейдите в "Сопоставления ветвей" (меню "Вид" -> "Сопоставления ветвей")
- Ctrl + N, чтобы начать новое сопоставление (или щелкните правой кнопкой мыши список и выберите "New Branch Mapping...")
- В разделе "Сопоставление ветвей" укажите имя, например B1_TO_B2.
Замените сопоставления в представлении, например, на
//depot/product/B1/... //depot/product/B2/...
- Хорошо
- Создайте пустой список изменений, в который будут помещены ваши недолговечные файлы (в противном случае они перейдут в список изменений по умолчанию). Номер этого нового списка изменений в приведенной ниже команде будет
. В командной строке запустите
p4 unshelve -s <SOURCE_CL> -c <TARGET_CL> -b B1_to_B2
- Если это не работает, убедитесь, что в.p4config установлено правильное рабочее пространство
- Теперь все, что вам нужно сделать, это разрешить файлы в
Вы смотрите на правильную команду, но, возможно, не правильные параметры. Вот как я это использую:
p4 unshelve -s 77655 -b MY_BRANCH_SPEC
который отменяет список изменений 77655, используя указанную спецификацию ветви для сопоставления файлов с новой веткой.
Критически важно убедиться, что в указанном сопоставлении ветвей и текущем сопоставлении рабочей области содержатся как исходные, так и целевые файлы, в противном случае вы получите ошибку "file not mapped".
Потратив некоторое время на поиск и чтение, я не нашел конкретного примера, чтобы отложить отложенный список изменений в другой ветке. наконец я собрал конкретный пример.
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
3. p4 unshelve -s 324426 -b B1_to_B2
Альт, отложенные файлы в списке изменений 324426 в B1 теперь не хранится в B2 и готов к отправке.
Это то, что помогло мне разложить список изменений из одной ветки в другую.
Допустим, у вас есть отложенный список изменений.#112233
в исходной ветке:"//depot/release1/main/"
которую вы хотите убрать в целевую ветку:"//depot/release2/main/"
.
- Создайте спецификацию ветки в текстовом редакторе:
nano branch-spec.txt
Branch: R1_to_R2
View:
//depot/release1/main/... //depot/release2/main/...
Создать ветку
p4 branch -i < branch-spec.txt
Отложить изменения
p4 unshelve -s 112233 -b R1_to_R2
Решать
p4 resolve
Как обойти это в P4 2012:
- Вручную скопировать и переписать ветку со стволом
- Щелкните правой кнопкой мыши ветку в клиенте P4 и выберите "Согласовать автономную работу..."
Это позволит вам выбрать новые и измененные файлы и добавить их в набор изменений.
Вы можете использовать P4 unshelve для этого, но вы должны создать отображение ветвей, а именно A_to_B.
1] p4 unshelve -s CL_NUM -b A_to_B
2] p4 add (files opened for add)
3] p4 resolve
Примечание: пожалуйста, не забудьте шаг 2. P4 не открывайте их по умолчанию в вашей ветке назначения. Вы можете подтвердить это с помощью "p4 opened"
Я думаю, что вам действительно нужно это "p4 move -f". Это подробно объясняется здесь: p4 move -f: для чего это нужно?