Пометка части хранилища в Subversion - PullRequest
1 голос
/ 20 ноября 2008

Я родом из CVS. В настоящее время я изучаю использование SVN для проекта. Код, над которым я работаю, обычно имеет следующую структуру каталогов.

проект \ ЛИЭС \ lib1

Проект \ ЛИЭС \ lib1 \ тест

проект \ ЛИЭС \ lib1 \ фиктивный

проект \ ЛИЭС \ lib2

и т.д.

Когда я отмечаю релиз в CVS, я склонен создавать два тега, один из которых является "project-release-1", а другой - "project-release-1-with-tests". Тег «project-release-1» исключает тестовые каталоги, макеты каталогов и, возможно, некоторые другие файлы. Идея состоит в том, что мы часто не отправляем наш тестовый источник клиентам, и, выполняя экспорт тега «project-release-1», мы получаем клиентский набор исходного кода, который мы можем отправить им, и делая заказ на Тэг "project-release-1-with-tests" позволяет получить весь объем, который мы можем использовать для ветвления, если это необходимо для дальнейшей разработки.

Как мне сделать что-то похожее с SVN? В идеале в форме, которая может быть в сценарии; с SVN у нас есть сценарий для каждого проекта, который будет применять оба тега и создавать тег клиента, просто удаляя тег из каталогов test и mock и т. д. ...

Я предполагаю, что в SVN я бы создал тег "with tests", а затем (каким-то образом) проверил это, удалил каталоги test и mock и создал тег выпуска клиента?

Обновление :

Я решил изменить то, как я это делаю ... Вместо того, чтобы иметь скрипт для проекта, который устанавливает мои двойные теги старого стиля, у меня теперь есть скрипт для проекта, который принимает помеченный релиз (который включает в себя материал, который я не доставлять клиентам) и удаляет вещи, которые я не отправляю клиентам. Работа выполнена, нужен только один тег.

Ответы [ 2 ]

1 голос
/ 22 ноября 2008

Тег - это просто копия, как и любая другая копия. Таким образом, вы можете создать пустой каталог в тегах, чтобы пометить этот выпуск, а затем создать внутри него два каталога - один для выпуска с тестами, а другой для выпуска без тестов.

1 голос
/ 20 ноября 2008

Я не знаю, является ли это «правильным» ответом, но я могу придумать два варианта.

A. Отметить и удалить:

  1. Пометить каталог / project / libs как project-release-1;
  2. Удалить каталоги "test" и "mock" из project-release-1. В качестве альтернативы сначала создайте тег project-release-1-with-tests со всем, затем пометьте (скопируйте) этот каталог как project-release-1 и повторите №2 выше.

B. Используйте «externals»:

  1. Создать пустой каталог project-release-1 под тегами. Не используйте теги, просто создайте каталог.
  2. Отредактируйте свойства этого каталога, добавьте свойство с именем "svn: externals". В значение этого свойства введите: lib1 -r $ REV url: to / project / libs / lib1 lib2 -r $ REV url: to / project / libs / lib2

где $ REV - номер версии тегированного исходного кода. Позже, когда вы проверите каталог «без тестов», вы получите два «тегированных» каталога.

Я считаю, что первый вариант лучше, поскольку инструменты, которые анализируют ветки и теги, будут лучше менять понимание того, что вы сделали.

Кстати, мне интересно, почему вы хотите использовать тег без тестов? Почему вас беспокоит, что у вас есть тесты в теге?

  • Ноам.
...