Perforce имеет режим DVCS, который немного напоминает git, но если нет веских причин не делать этого (например, ограниченное подключение или жесткие ограничения ресурсов на сервере), типичным способом использования Perforce является выполнение всего непосредственно на центральном сервере. («Удаленный репозиторий»). p4 submit
в типичной модели - это, по сути, git commit
+ git push
, потому что ваш «коммит» идет непосредственно на удаленный сервер.
Так что, когда вы создаете ветку, вы делаете это на серверетакже. Ветви в Perforce - это просто папки, которые копируются из других папок (с большой семантикой отслеживания слияний, построенной поверх этой простой операции копирования), поэтому для создания новой ветви функций из //depot/main
вы можете запустить что-то вроде:
p4 integ //depot/main/... //depot/features/road-rev/...
p4 submit
Это создает новую ветку в депо (в виде папки с именем features/road-rev
), а также синхронизирует ее с вашим рабочим пространством, поэтому теперь все, что вам нужно сделать, это:
cd features/road-rev
p4 add <new files>
p4 edit <existing files>
<etc>
p4 submit
Изменениявы делаете в ветке road-rev
совершенно отдельно от ветки main
. Чтобы получить более новые изменения из main
, вы просто повторяете ту же команду integ
, которую вы использовали для ее создания, но добавляете resolve
для обработки файлов, требующих слияния:
p4 integ //depot/main/... //depot/features/road-rev/...
p4 resolve -as
p4 resolve
p4 submit
Если вы запуститеинтегрируйте команду в обратном направлении (т.е. меняйте порядок аргументов), затем изменения объединяются в другом направлении. Как только вы поймете, что можете использовать integrate
для произвольной передачи изменений из одного набора файлов в другой, ветвление становится очень простым вопросом определения различных наборов файлов (обычно в качестве папок верхнего уровня) для представления различных разветвленных вариантовкод - это называется «межфайловое ветвление».
Если ваш администратор настроил ваше хранилище для использования потоков , рабочий процесс немного отличается (потоки - это "управляемые ветви", которыепредназначены для того, чтобы чувствовать себя немного более похожими на ветки git, к которым вы привыкли - вы можете иметь только один поток в своей рабочей области за раз, и вы используете команду switch
для переключения между ними, вместо определения представление клиента , которое отображает произвольные ветви / файлы в произвольные части вашего рабочего пространства). Вы по-прежнему имеете одно и то же базовое представление различных разветвленных вариантов, представляющих собой разные папки в хранилище, но сверху есть целый набор синтаксических символов, которые как бы скрывают это представление. Чтобы создать ветвь объекта из потока, вы должны сделать:
p4 switch -c road-rev
, что аналогично git checkout -b road-rev
.