Я ищу отзывы о преимуществах и недостатках методов, доступных для создания отдельных ветвей разработки в хранилище Perforce. Если я правильно понимаю, есть два способа справиться с этим. Первый - создать частную ветку, которая является полной копией ветки, над которой вы работаете. Ветвь будет полностью автономной и полностью изолирует ваши изменения от целевой ветки.
Другой рекомендуемый метод - это разреженное ветвление. Это описано в Practical Perforce (глава 9, стр. 242). Это создает ветку, но только с файлами, которые вам нужно отредактировать. Затем вы перекрываете представление клиента целевой ветви с этим разреженным представлением клиента ветви разработки.
Оба метода потребуют от программиста выполнения некоторой работы по интеграции, чтобы получить свои изменения в целевой ветви. Кажется, что для метода Private Branch потребуется намного больше дополнительной памяти, чтобы создать копию всей ветки. Однако в документации Perforce указано, что в этой ситуации он выполняет «ленивое копирование».
Интеграция также позволяет Perforce выполнять «отложенное копирование» файлов. Когда вы разветвляете файлы, сервер фактически не хранит две копии файлов - он просто хранит исходный файл, а указатель в базе данных фиксирует факт перехода к целевому файлу. Ленивые копии делают ветвление операцией с низкими накладными расходами; серверу не нужно отслеживать повторяющиеся копии файлов.
Это создает впечатление, что метод разреженной ветки просто добавляет возможность человеческой ошибки в процесс, поскольку, например, разработчик может начать работу с файлом, который они не добавили в ветвь разреженной, а затем случайно обновить изменение в целевая ветка, которая нарушает сборку. Но функциональность разреженного ветвления существует не просто так. Мы будем очень благодарны за любые отзывы о том, почему он существует и почему я должен использовать его в полной частной ветке (или наоборот).