Могу ли я интегрировать извлеченные файлы в другую ветку при выполнении
Мы работали над дизайном, и для этого мы создали каркас классов в нашей основной ветке. Теперь мы начинаем кодировать, и для этого мы получили новую ветку. Итак, было бы хорошо, если бы я мог переместить все новые файлы в основной ветке в новую ветку. Однако я пока не могу их зарегистрировать. Итак, возможно ли интегрировать проверенный список изменений? Благодарю.
6 ответов
На веб-сайте поддержки Perforce объясняется, как это сделать: База знаний Perforce: Выполняется работа по ветвлению. Было бы лучше, если бы это был один шаг, который не требовал выполнения восьми разных команд.
Начиная с выпуска 2013.1, путь к ветвящейся работе заключается в shelve
работа и unshelve
это на ветке. В деталях:
Отложите ваши выдающиеся изменения:
$ p4 shelve ... Change 182535 created with 10 open file(s). Shelving files for change 182535. edit //info.ravenbrook.com/project/mps/master/code/arenavm.c#26 # etc.
Расстелить их на ветке (используя
-b
опция, которая отображает имя файла через спецификацию ветки):$ p4 unshelve -b mps/branch/2013-06-05/diag -s 182535 ... //info.ravenbrook.com/project/mps/branch/2013-06-05/diag/code/arenavm.c - must resolve //info.ravenbrook.com/project/mps/master/code/arenavm.c@=182535 before submitting # etc.
Разрешить любые слияния, возникающие в результате
unshelve
, с помощьюp4 resolve -as
быстро сделать "безопасные", а затем делать остальное сp4 resolve
по-прежнему.$ p4 resolve -as //gdr-peewit/info.ravenbrook.com/project/mps/branch/2013-06-05/diag/code/arenavm.c - copy from //info.ravenbrook.com/project/mps/master/code/arenavm.c # etc. $ p4 resolve No file(s) to resolve.
(Пример вывода взят из реального сценария использования, который я запускал только сейчас.)
Я никогда не находил способ сделать это в исполнении, но вы можете хотя бы частично автоматизировать его.
Обычно, когда мне приходилось делать что-то подобное, я проверял файлы в ветке, в которую я хочу переместить объекты, а затем использовал WinMerge, чтобы различать ветви и копировать изменения. Как только это будет сделано, вы можете отменить изменения в исходной ветке и проверить их в новой ветке.
Это не лучшее решение (без автоматической проверки / добавления / удаления файлов в новой ветке), но это был самый быстрый способ, который я нашел.
Чтобы перефразировать ответ Гарета Риса выше в простых терминах,
p4 unshelve -b target_branchspec -s changelist
:)
На самом деле, нет.
Конечно, вы можете просто открыть файлы для редактирования в новой ветви и вручную скопировать измененные файлы из рабочей области вашей основной ветви в рабочую область новой ветви. Это, наверное, самый простой способ, если в нем всего несколько файлов.
Вот несколько сценариев, которые могут быть полезны, если задействовано большее количество файлов. Например, с помощью скрипта P4Shelf вы можете создать архив всех ваших измененных файлов, а затем автоматически открывать их в любой ветке с восстановленными изменениями.
Кроме того, посмотрите некоторые другие изящные сценарии для Perforce Джима Тиландера.
Простой ответ - нет, ты не можешь. К сожалению, быстрое ознакомление с документами Perforce не привело к этому, но по моему опыту любая попытка вытащить коврик из-под сервера Perforce приведет к тому, что ваши изменения будут потеряны, и вы останетесь несчастными. автофургоне.
Сделайте резервную копию, создайте новую рабочую область в новой ветке и повторно примените ваши изменения, возможно, используя стратегию diff / merge, изложенную в ответе Herms.