2016-01-09 3 views
1

Возможно ли создать филиалы в Perforce в аналогичном стиле Git? То есть без создания новой папки.Возможно ли вступить в Perforce без создания новой папки?

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

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

Если вы не используете прямой Perforce, я с удовольствием перейду к GitSwarm.

Для справки I'm running Perforce version 2015.1/1233444.

ответ

1

Возможно, да, но с централизованной версией системы она включает в себя немного «магии». В принципе, веткой части больше не нужно привлекать клиента. Взгляните на p4. Это создаст другую папку на сервере, но ничего не сделает локально. Затем вы можете отредактировать рабочее пространство своего клиента, чтобы сопоставить разветвленные файлы вместо файлов соединительных линий, и он будет просто повторно синхронизироваться поверх файлов на вашем диске.

Теперь, сказав это, если вы хотите взглянуть на нашу рабочую версию DVCS, тогда вы можете просто сделать «p4 switch -c», и он будет создавать новую ветвь локально, переключить рабочее пространство на он (откладывает любую открытую текущую работу в процессе) и уходит.

0

Если вы используете потоки («управляемую» версию ветви Perforce, в отличие от выполнения раздельного междоменного разветвления с произвольными путями), это довольно просто. Как сказал P4Gabe, «switch -c» - это вариант с одним выстрелом на локальном сервере.

На общем сервере это немного сложнее, потому что вы должны явно «заполнить» (это значит, чтобы наивные пользователи случайно разветвляли много файлов много раз на общем сервере), но это все еще только несколько шагов, и это то, что вы как опытный пользователь может легко сценарий:

  1. p4 поток -P (текущий поток) -t развитие (новое название потока)
  2. p4 заселить -r -S (новый поток наименование)
  3. p4 переключатель (новое название потока)

Эквивалент возможен с использованием специальных ветвей («классический»), если у вас есть хорошее представление о том, как работают представления клиентов - используйте для заполнения новой ветви, измените вид своего клиента, чтобы сопоставить новую ветку в пространство имен, в настоящее время занятое старой ветвью, и синхронизация.

Этот блог о том, что именно «p4 переключатель» не может помочь, если вы пытаетесь спроектировать собственное решение, похоже, к но-не-совсем команда «переключатель»: https://www.perforce.com/blog/150428/p4-switch-switching-it

1

Мой оригинал ответ был удален, потому что я думал, что ссылка была лучшей идеей, чем повторение контента. Виноват.

Во всяком случае, я считаю, что функции DVCS в Perforce Helix поставляют именно то, что вам нужно.В блоге я уже писал в этой теме (link here for reference) Я объяснил, как создать новую ветку на месте с помощью одной команды:

p4 switch -c newBranchName 

Это создаст новую ветку с именем «newBranchName» и сохранить любой существующий незавершенная работа по умолчанию. Чтобы узнать, на какой отрасли вы работаете вы можете использовать команду переключения со списком аргументов следующим образом:

p4 switch -l 

Это покажет вам выход, как это, звездочка показывает, что вы в настоящее время работает на ветке newBranchName ,

newBranchName * 
main 

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

p4 switch main 
p4 merge --from newBranchName 
p4 resolve –as 

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

В качестве альтернативы, если вы предпочитаете придерживаться Git, вы можете использовать это непосредственно с нашим Helix Versioning Engine с помощью нашей технологии Git Fusion или напрямую использовать Git с нашей новой технологией GitSwarm. Это довольно удивительный вариант (на мой взгляд), поскольку он позволяет зеркально отражать контент автоматически и двунаправленно между GitSwarm и сервером. Таким образом, вы получаете все возможности Git с GitSwarm (который сам основан на GitLab) и все преимущества от остальной части Helix.

Надеюсь, что это поможет!