Когда код разветвляется в TFS с помощью метода ветвления, является ли код разветвленным физически или логически? Логически я имею в виду, это просто набор изменений (измененные дельты) или все файлы скопированы?
Является ли ветка TFS физическим или логическим моментальным снимком?
Ответы (2)
Разветвленные файлы не копируются в базу данных TFS. Новая версия файла не будет создана, пока не будет изменена разветвленная версия. Вот почему создание ветки в большом проекте не занимает вечности.
Источник:
Четвертый абзац под ветвлением поясняет, что он не создает отдельную копию идентичных файлов:
Для создания веток требуется очень мало дополнительного места для хранения. Сервер минимизирует требуемый объем хранилища, сохраняя только одну копию идентичного содержимого, независимо от того, сколько разных файлов содержится в папке. Таким образом, если у вас есть 100 копий файла размером 1 МБ, и все файлы идентичны, сервер будет хранить только 1 МБ, а не 100 МБ. Когда вы создаете новую ветку и фиксируете ее, все файлы в новой ветке, идентичные файлам в исходной ветке, указывают на одно и то же содержимое. В результате ветвь потребляет очень мало дополнительного места для хранения, и это пространство для хранения увеличивается только тогда, когда разветвленный файл становится отличным от исходного. И даже когда файлы меняются, Team Foundation Server использует разностный механизм для анализа изменений между файлами и еще раз оптимизирует пространство для хранения.
PDF-файл с руководством по созданию ветвей Майкрософт:
http://geeks.netindonesia.net/downloads/etc/TFS-Branching.pdf
Краткий ответ: ветки хранятся логически и не являются прямой копией родителя.
Подробный ответ: Билл Хейс, специалист по VS ALM Ranger, написал подробный пост в блоге, описывающий, как хранятся ветки и история файлов в TFS.