|
|
  |
общие файлы для разных проектов, синхронизация и контроль версий |
|
|
|
Sep 11 2009, 13:28
|

инопланетянин
  
Группа: Свой
Сообщений: 236
Регистрация: 24-12-06
Из: Питер
Пользователь №: 23 832

|
Цитата(ukpyr @ Sep 11 2009, 13:27)  кто как решает ? Я завёл отдельный SVN-репозиторий для собственных библиотечных файлов. При этом желательно правильно организовать его дерево каталогов, например по Target-ам (AVR, ARM, x86). Далее просто время от времени добавляете в репозиторий свои библиотечные файлы и не забываете писать подробный commit. Со временем у вас образуется база либов, которую вы сможете подключать к версионированным проектам (для SVN - externals) Вообщем идея примерно такая. P.S. Не обязательно использовать именно SVN, есть и другие системы контроля версий, выбираете какая вам больше нравиться.
|
|
|
|
|
Sep 17 2009, 10:33
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(dxp @ Sep 11 2009, 09:08)  Если у вас система управления версиями Subversion, то вам правильно посоветовали - svn:externals. В проекте заводите отдельную директорию lib, как у вас и сделано, в свойствах прописываете svn:externals - путь к внешнему репозиторию, где хранятся эти общие файлы. При апдейте этой директории в нее будут помещены файлы из того внешнего репозитория. Все возможности по синхронизации этих файлов между проектами (через их репозиторий) у вас будут. как раз вопрос в тему. про svn_externals выглядит это все красиво, но вот сейчас столкнулся вот с чем (работаю с ФПГА). Есть у меня проект под названием "общие компоненты". Пока компоненты в нем были маленькие (занимали один файл) все было хорошо. Использовал я этот проект в N ом количестве других проектов, при этом ссылался на него как svn::external ../common_comp/trunk/rtl. Компоненты под проект не кастомизировались, но если в них находилась ошибка, то она исправлялась по месту + делался коммит в корневое дерево проекта общих компонентов. Теперь нарисовался у меня компонент файлов на 10. из них в релиз идет только 7 файлов, т.к. остальные файлы рабочие, используемые при отладке. Также при разработке этого компонента был создан мини проект и его структуру хотелось бы сохранить для возможного устранения ошибок в будущем. Но в описанную выше технику использования либы этот многофайловый компонент, часть файлов которого не нужна, не вписывается. Действительно зачем при использовании компонента мной или кем то другим видеть файлы, которые для этого не нужны. собственно вопрос, как грамотно обрулить данную ситуацию? Я вижу пока только вариант сбора всех проектов общих компонентов в trunk в одной папке и релизы этих компонентов в tag. Правда в этом случае правка багов должна идти сложнее : правим в папке проекта общих компонентов, затем делаем очередной релиз, затем переписываем svn_externals. Но это как то коряво. Может как то можно сделать псевдоним в SVN. Например я веду релизы и по псевдониму например CURRENT_RELEASE SVN вытаскивет нужный мне релиз и не потребуется ручками править svn_externals?
--------------------
|
|
|
|
|
Sep 17 2009, 13:19
|

инопланетянин
  
Группа: Свой
Сообщений: 236
Регистрация: 24-12-06
Из: Питер
Пользователь №: 23 832

|
Цитата(des00 @ Sep 17 2009, 14:33)  собственно вопрос, как грамотно обрулить данную ситуацию? не претендую на грамотность  А может воспользоваться POST-COMMIT HOOK. Написать скрипт, который после коммита проекта с либой создаст tag, содержащий нужные файлы, который всегда будет связан svn:externals с проектом, в котром используется эта либа. Таким образом вы правите тестовый проект, производите фиксацию, нужные файлы попадают в tag, который связан svn:externals с другим проектом. P.S. Не бейте сильно, если чушь написал. я из благих намерений
|
|
|
|
|
Sep 17 2009, 14:05
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(Legotron @ Sep 17 2009, 08:19)  А может воспользоваться POST-COMMIT HOOK. Написать скрипт, который после коммита проекта с либой создаст tag, содержащий нужные файлы, который всегда будет связан svn:externals с проектом, в котром используется эта либа. Таким образом вы правите тестовый проект, производите фиксацию, нужные файлы попадают в tag, который связан svn:externals с другим проектом. данный вариант я обдумывал, вот что именно мне в нем не нравиться: svn::externals может ссылаться только на одну и ту же папку и в данном случае, при каждом создании нового релиза(не важно скриптом или ручками) эту папку нужно прибивать и создавать заново. Насколько я понял книгу об SVN такое (постоянное убийство и создание папки) приемлимо в branch, но в tag не поощряется. Минус также в том, что если в tag будет только одна эта папка, то потеряется история релизов(т.е. сложно будет сказать где релиз 1.0, а где 1.11), это может "выстрелить" в старом проекте, когда либа "ушла" слишком далеко. А если в tag будет лежать N релизов то это будет еще одна постоянная копия и мне кажеться что эта копия во первых лишняя, а во вторых она постоянно прибивается и создается заново.
--------------------
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|