Является ли ветка TFS физическим или логическим моментальным снимком?

Когда код разветвляется в TFS с помощью метода ветвления, является ли код разветвленным физически или логически? Логически я имею в виду, это просто набор изменений (измененные дельты) или все файлы скопированы?


person Jordan Parmer    schedule 11.02.2009    source источник


Ответы (2)


Разветвленные файлы не копируются в базу данных TFS. Новая версия файла не будет создана, пока не будет изменена разветвленная версия. Вот почему создание ветки в большом проекте не занимает вечности.

Источник:

http://www.codeplex.com/BranchingGuidance/Wiki/View.aspx?title=Isolation%20for%20Collaboration&referringTitle=Home

Четвертый абзац под ветвлением поясняет, что он не создает отдельную копию идентичных файлов:

Для создания веток требуется очень мало дополнительного места для хранения. Сервер минимизирует требуемый объем хранилища, сохраняя только одну копию идентичного содержимого, независимо от того, сколько разных файлов содержится в папке. Таким образом, если у вас есть 100 копий файла размером 1 МБ, и все файлы идентичны, сервер будет хранить только 1 МБ, а не 100 МБ. Когда вы создаете новую ветку и фиксируете ее, все файлы в новой ветке, идентичные файлам в исходной ветке, указывают на одно и то же содержимое. В результате ветвь потребляет очень мало дополнительного места для хранения, и это пространство для хранения увеличивается только тогда, когда разветвленный файл становится отличным от исходного. И даже когда файлы меняются, Team Foundation Server использует разностный механизм для анализа изменений между файлами и еще раз оптимизирует пространство для хранения.

PDF-файл с руководством по созданию ветвей Майкрософт:

http://geeks.netindonesia.net/downloads/etc/TFS-Branching.pdf

person Jim Petkus    schedule 11.02.2009
comment
Отлично - это именно то, что я искал. Спасибо! - person Jordan Parmer; 11.02.2009
comment
Понизить без комментариев? Эта цитата взята непосредственно из руководящего документа Microsoft Branching, и я считаю ее точной на 100 %. Мы создаем ветки в очень большом проекте, и ветки создаются почти мгновенно и занимают очень мало места для хранения. - person Jim Petkus; 11.02.2009
comment
Личный опыт: с TFS создание ветки стоило бы значительного времени, в то время как это происходит мгновенно, теперь мы перешли на Subversion. Я не уверен насчет внутренней работы, но TFS выполняет больше, чем небольшую административную транзакцию. - person Teun D; 11.02.2009
comment
@Teun - я думаю, будет справедливо сказать, что ветвление само по себе не выполняется регулярно (обычно я видел, как это делается только при прерывании точечных выпусков). Меня больше беспокоит пространство, чем время. - person Jordan Parmer; 11.02.2009

Краткий ответ: ветки хранятся логически и не являются прямой копией родителя.

Подробный ответ: Билл Хейс, специалист по VS ALM Ranger, написал подробный пост в блоге, описывающий, как хранятся ветки и история файлов в TFS.

http://blogs.msdn.com/b/billheys/archive/2011/05/05/how-tfs-stores-files-and-calculated-deltas-on-versioned-files.aspx

person James Wulkan    schedule 19.06.2012