SVN - Когда вы помечаете рабочую копию, она все еще дешевая?
Используя Subversion, в моей рабочей копии я делаю небольшую модификацию (обновляю номер версии). Затем я хотел бы отметить свою рабочую копию. Будет ли этот тег оставаться дешевой копией с модификацией, или SVN будет дублировать файлы? Я не хотел бы, чтобы мой репозиторий увеличился в размере, потому что я пытаюсь сохранить изменение номера версии.
Причина, по которой я спрашиваю о создании тега, который содержит модификацию, а не фиксирует теги, связана с моим сервером сборки. Сервер сборки создает CCNetLabel, который я использую для обновления номеров версий моих проектов (AssemblyInfo.cs). Когда сборка успешна, она создает тег. Когда я использую ForceBuild, тег основан на рабочей копии, которая будет содержать измененный номер версии. Я хочу, чтобы тег содержал соответствующий номер версии.
Примечание: Это спорный вопрос, если я создаю ветвь или тег, однако SVN не делает различия между ними.
4 ответа
Это зависит. Если ваша рабочая копия устарела (все узлы имеют одинаковую ревизию), это так же дешево, как пометка из хранилища.
Для каждого файла / каталога (или фактически поддерева) с ревизией, отличной от его родительской, будут добавлены дополнительные данные. И если у вас есть локальные модификации, будет добавлено еще больше данных.
Но это все еще достаточно дешево: он не дублирует файлы, которые уже есть в хранилище.
Из описания подрывной деятельности
- Ветвление и тегирование - это дешевые операции с постоянным временем. Нет никаких причин, чтобы эти операции были дорогими, поэтому они не являются. Ветви и теги реализованы в терминах базовой операции "копирования". Копия занимает небольшое, постоянное количество места. Любая копия является тегом; и если вы начнете фиксировать копию, то это тоже ветка. (Это устраняет "маркировку точек ветвления" в CVS, устраняя различие, которое делало теги точек ветвления необходимыми в первую очередь.)
Заметка! Я только что заметил, что Subversion был перемещен в организацию проекта Apache
Довольно устаревшая публикация, но стоит отметить, что для любого посетителя ответ, в котором говорится, что вы можете только "Вы можете пометить только те данные, которые уже были добавлены в хранилище...", подтвержденная работа не является абсолютно точной (по крайней мере, не сейчас).
Вы можете пометить рабочую копию, которая может содержать смешанные ревизии и даже переключенные каталоги, а также локальные модификации.
Что касается дешевизны, то да, она все равно должна быть дешевой, поскольку Subversion ответит за вас, а затем наложит изменения вашей рабочей копии на репозиторий, сэкономив как можно больше места.
Создание тега или ветки в Subversion очень дешево. Файлы не будут скопированы. Все, что происходит, - это то, что будет создана новая ревизия, содержание которой в основном просто содержит указатель, куда был скопирован тег. Это будет тот же размер для тега проекта с одним маленьким файлом или для одного с миллионом больших.
Когда вы говорите "пометить мою рабочую копию", вы имеете в виду "пометить мою рабочую ветку"? Вы можете пометить только те данные, которые уже были зафиксированы в каком-либо хранилище, а не локальные незафиксированные изменения.