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