Я нашел эту статью полезной при планировании собственной ветки поставщика. Однако я решил создать папку / current / в любом случае для нескольких версий, чтобы увидеть, насколько значительна была экономия. Я подумал, что смогу удалить его позже, если оно не стоит накладных расходов.
Я решил опубликовать только основные релизы в / current /, затем создать ветку для каждой основной версии и применить к ней патчи. Наконец, тег для каждого результирующего уровня кода. Это хорошо согласуется с шаблоном поставщика для выпусков, в котором исправления (третий сегмент версии остается неизменным) изменяют только необходимые файлы, но выпуски (изменения третьего сегмента) помечают каждый файл.
15.1.0.1901
-> update trunk
-> copy trunk to new branches/15.1.0
-> copy branches/15.1.0 to tags/15.1.0.1901
15.1.0.2233
-> update branches/15.1.0
-> copy branches/15.1.0 to tags/15.1.0.2233
15.1.1.3064
-> update trunk
-> copy trunk to new branches/15.1.1
-> copy branches/15.1.1 to tags/15.1.1.3064
15.1.0.3299 (bug fix for 15.1.0)
-> update branches/15.1.0
-> copy branches/15.1.0 to tags/15.1.0.3299
Код поставщика составляет около 180 МБ, в основном DLL-библиотеки .NET 3.5 с несколькими файлами PDB и XML. Я обнаружил, что экономия места была значительной, даже при коммите против транка, где я перешел с 15.1.0 на 15.1.1, где каждая DLL имела изменения.
Version -> size of repos/db/revs file
15.1.0.2782 -> 19,076 KB
15.1.0.2845 -> 78 KB
15.1.0.2892 -> 130 KB
15.1.0.2907 -> 981 KB
15.1.0.2948 -> 1,021 KB
15.1.1.2998 -> 3,334 KB (new branch)
15.1.1.3064 -> 477 KB
Если предположить, что каждое обновление, зарегистрированное само по себе, занимало 19 МБ, я бы сейчас занимал около 133 МБ вместо 26 МБ, что экономило 80%. Теперь я не испытываю недостатка в дисковом пространстве, и Subversion определенно отлично справляется с компактным хранением, но я считаю это довольно неплохой экономией, которая стоит структуры и дополнительных операций копирования.
Ваш пробег может меняться, естественно. В моем случае очень полезно иметь все исторические версии: моя команда поддерживает множество клиентов, каждый из которых может использовать свою версию программного обеспечения вендора. Судебная ценность знания того, какие файлы изменил поставщик, также помогает предсказать, повлияет ли исправление на наши улучшения.