Могу ли я интегрировать извлеченные файлы в другую ветку при выполнении - PullRequest
10 голосов
/ 19 ноября 2008

Мы работали над дизайном, и для этого мы создали каркас классов в нашей основной ветке. Теперь мы начинаем кодировать, и для этого мы получили новую ветку. Итак, было бы хорошо, если бы я мог переместить все новые файлы в основной ветке в новую ветку. Однако я пока не могу их зарегистрировать. Итак, возможно ли интегрировать проверенный список изменений? Спасибо.

Ответы [ 6 ]

10 голосов
/ 19 ноября 2008

На веб-сайте поддержки Perforce объясняется, как это сделать: База знаний Perforce: работа над ветвлением . Было бы лучше, если бы это был один шаг, который не требовал выполнения восьми разных команд.

6 голосов
/ 05 июня 2013

Начиная с выпуска 2013.1, путь к текущей работе филиала - shelve работа и unshelve ее на ветке. Подробно:

  1. Отложите ваши выдающиеся изменения:

    $ 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.
    
  2. Отключить их в ветви (используя опцию -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.
    
  3. Разрешите любые слияния, следующие из 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.
    

(Пример выходных данных взят из реального случая использования, который я только что выполнил.)

0 голосов
/ 12 июня 2014

Чтобы перефразировать приведенный выше ответ Гарета Риса в простых терминах,

p4 unshelve -b target_branchspec -s changelist

:)

0 голосов
/ 19 ноября 2008

Не совсем.

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

Здесь - несколько сценариев, которые могут быть полезны, если задействовано большее количество файлов. Например, с помощью скрипта P4Shelf вы можете создать архив всех ваших измененных файлов, а затем автоматически открывать их в любой ветке с восстановленными изменениями.

Также, посмотрите другие классные сценарии для Perforce Джима Тиландера.

0 голосов
/ 19 ноября 2008

Простой ответ - нет, ты не можешь. К сожалению, быстрое ознакомление с документами Perforce не привело к этому, но по моему опыту любая попытка вытащить коврик из-под сервера Perforce приведет к тому, что ваши изменения будут потеряны, что оставит вас несчастными кемпер.

Сделайте резервную копию, создайте новую рабочую область в новой ветви и повторно примените свои изменения, возможно, используя стратегию сравнения / слияния, изложенную в ответе Гермса.

0 голосов
/ 19 ноября 2008

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

Обычно, когда мне приходилось делать что-то подобное, я проверял файлы в ветке, в которую я хочу переместить объекты, а затем использовал WinMerge , чтобы различать ветви и копировать изменения. Как только это будет сделано, вы можете отменить изменения в исходной ветке и проверить их в новой ветке.

Это не лучшее решение (без автоматической проверки / добавления / удаления файлов в новой ветке), но это был самый быстрый способ, который я придумала.

...