Hello, Shapovalov! You wrote on Mon, 17 Aug 2009 00:01:33 +0000 (UTC):
SAI> Пару лет выпускалась - версия v00_00 (как у нас принято обзывать) SAI> Затем нашли ошибки в ПО - появилась версия v00_01 SAI> И вот произведена модификация платы - соответсвенно версия v01_00 SAI> Hажаль, кое-какое используемое ПО требует абсолютных, а не SAI> относительных путей - поэтому ветка v01 хранится в том же месте, что и SAI> v00, а модификации в прошивках могут быть как в ветке v00, так и в SAI> v01, соответсвенно имеется гемморой по переписыванию из архива в SAI> директорию той ветки, какую собираешься редактировать (ну и изменения SAI> в общей части проекта - если ошибка/модификация общая). SAI> Сейчас проект хранится в e:\projekt\SKD18, а архивы, которые потом из SAI> этого же места пишутся на диск, - в e:\projekt\SKD18\disk\v00_00, SAI> e:\projekt\SKD18\disk\v00_01 и e:\projekt\SKD18\disk\v01_00. SAI> Вводят на предприятии SVN - и вот не понятно как лучше сделать, чтоб SAI> меньше переделывать. SAI> Target - выходит e:\projekt\SKD18\ SAI> Release - e:\projekt\SKD18\disk\
Стоп. Как я понимаю речь идет о рабочих копиях? Содержимое репозитория никак не свзяано с тем, где и как хранятся рабочие копии. Их может быть сколько угодно в любых каталогах.
SAI> А как быть с Tags?
Таги сущетсвуют только в репозитории. Это маркер состояния проекта в опредленной стадии развития.
SAI> Создать в репозитарии e:\projekt\SKD18\versii (можно и Tags написать, SAI> но я сам из-за редкого использования путаюсь, а те кто постарше - SAI> вообще не удобно; если, конечно, из-за того, что вместо Tags будет SAI> versii - будут роблемы, то придётся обозвать Tags) - и там хранить? А SAI> как загружать полседнюю версию выбранной ветки и делать, чтоб общие SAI> модификации один раз правились? Документацию читал, но чего-то SAI> элементарного я не понимаю.
Какую? svn-book.pdf доступна на сайте. Желательно прочитать ее в оригинале.
SAI> Или есть другие варианты?
Во-первых: определяемся с терминоологией.
Пусть создан репозиторий svn://svn.yuorserver.ua/SKD18 - это то место, где хранится проект на сервере со всеми ветками и тагами. Репозиторий создается коммандой svnadmin create на сервере и существует только там.
Принято (не обязательно, но настоятельно рекомендуется) в репозитории создавать три подкаталога:
tags branches trunk
Как они создаются - Глава 5. Repository administration. Adding projects.
В trunk хронится основной "ствол" проекта, в него вносятся изменения по мере развития проекта. В tags складываются "релизные" копии проекта, на самом деле можно считать, что там хранится просто символическая метка, которая указывает на состояние проекта в основной момент времени. В branches хранятся и развиваются "ветки". Они как раз нужны для поддержки старого оборудования.
Все существующие данные изначально импортируются в "ствол". После этого обязательно надо создать рабочию копию, т.е. сделать svn checkout svn://svn.yuorserver.ua/SKD18/trunk. Это команда создаст на локальной машине рабочую копию проекта. Мы работаем только с ней, т.е. все правки вносим только в нее. При необходисмости делаем svn commit (отсылка изменений на сервер). Если над проектом работает несколько человек у кождого должна быть своя рабочая копия, созданная svn checkout. Все изменения в проекте синхронизируются у разных людей только средствами svn (update, commit).
Теперь представим, что проект достиг релизного статуса. Мы создаем таг (Глава 4. Branching and merging. Tags), дапустим rev00_00. для этого даем комманду:
svn copy svn://svn.yuorserver.ua/SKD18/trunk svn://svn.yuorserver.ua/SKD18/tags/rev00_00 -m"Создана ревизия 00_00"
Теперь в любой момент мы можем получить новую копию проекта, в том состоянии, когда она был создан таг:
cvs checkout svn://svn.yuorserver.ua/SKD18/tags/rev00_00 - получили копию проекта в состоянии ревизии 00_00
Дальнейшую работу над проектом продолжаем только в "стволовой" рабочей копии. tags нужно использовать только для сохранения снапшотов.
Теперь представим, что мы уже создали несколько ревизий (тагов) и хотим от какой-то предыдущей ревизии отпочковать ветку для поддержки старого оборудования:
Для этого создаем в branches копию нужной нам ревизии (или ствола, если нужно почковать от текущего состояния) (раздел Creating a Branch). Создается точно так же коммандой copy. Чтобы теперь работать с кодом ветки нужно сделать checkout новой рабочей копии (допустим ветку мы создали тут svn://svn.yuorserver.ua/SKD18/branches/old_device). Все изменения в код для старого девайса делаем только в рабочей копии данной ветки.
Если есть изменения общие для ствола и веток, то делаем их в любой из копий. Потом делаем svn merge для вненсения измений в другие ветки или ствол. Глава
- Copying Changes Between Branches.
WBR, AVB