|
|
  |
SVN: Как хранить файлы, которые одновременно являются и результатом и исходниками, Не знаю как сделать |
|
|
|
Jul 12 2013, 07:39
|
Профессионал
    
Группа: Свой
Сообщений: 1 817
Регистрация: 14-02-07
Из: наших, которые работают за бугром
Пользователь №: 25 368

|
Извиняюсь, но SVN для меня новая, поэтому прошу прощения, если это где-то уже написано или обсуждалось.
В общем сейчас перемещаем свои проэкты в репозиторий и возник вопрос, как хранить файлы, которые одновременно являются и результатом одних проектов и исходниками в других? Т.е. например у нас есть проект для ПЛИС. В MATLAB/Симулинк есть модель из которой генерится HDL код. Этот HDL код используется как исходник в EDK проекте и вместе с другими исходниками из него делается bitstream. В EDK проекте помимо модели также присутствует софтпроцессор для которого нужно будет сгенерировать код. Для этого из EDK/SDK генерируются .c и .h файлы, которые являются драйверами и используются в Linux проекте для написания приложения, которое в дальнейшем компилируется и запускается на софтпроцессоре. Надеюсь более или менее понятно объяснил. Конечно понимаю, что SVN рекомендует хранить только исходники и никаких генерационных файлов, но тогда возникает следующие проблемы: 1. Если создать рабочую копию, то все этапы генерации и компиляции нужно проходить заново - при нашем проекте - это генерация HDL кода, синтез и разводка ПЛИС, компиляция LINUX ядра и приложения - вся сборка занимает около 8 часов. А иногда нужно всего -лишь подкорректировать только что-то в конце цепочки - например в приложении для процессора. 2. Не все пользователи имеют все необходимые проги. Т.е. тот кто пишет код для процессора под linux может не иметь Matlab и EDK и таким образом он вообще не может получить исходники для своего проэкта.
Вопрос - как это решить. Хранить результаты тоже? Если хранить то где их хранить - в исходных проектах или в проектах, где они используются? Как тогда все остслеживать?
|
|
|
|
|
Jul 12 2013, 10:14
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
QUOTE (syoma @ Jul 12 2013, 10:40)  Так где храните? В проектах, где они сгенерированы, или в проектах, где они используются? Логика подсказывает, что хранить нужно там, где используются. Тогда а) не будет проблем привязки ревизий генерирующего репозитория к ревизиям использующего. б) использующий проект достается целиком одним махом из одного репозитория готовым к сборке.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Jul 12 2013, 10:22
|
не указал(а) ничего о себе.
     
Группа: Свой
Сообщений: 3 325
Регистрация: 6-04-06
Пользователь №: 15 887

|
8 часов - это еще немного. Вот, если взять стандартный гостовский процесс внесения изменений в КД, то там может доходить до нескольких лет.  Поэтому надо подумать, нужна ли принудительная синхронизация всего проекта целиком. Может оказаться так, что это не обязательно, а может, что и нужна. Когда-то на конструкторском форуме видел, что некоторые фирмы типа Сухого могут при внесении изменений в один болтик пересобрать всю модель фюзеляжа самолета. Но им это, очевидно, надо, иначе были бы проблемы. Вот и надо подумать, будут ли у Вас подобные проблемы, и в каком масштабе, если этого не делать. Лично я предпочитаю сохранять результаты, а не только исходники, но только те результаты, которые потом используются. При этом, если проект большой, то вводится некая иерархия. Те, кто используют результаты от предыдущих этапов, берут для себя исходные данные из соответствующих папочек. В эти папочки файлы попадают путем ручного переноса или настраивается скрипт, который запускается после окончания предыдущего этапа. Все папочки для всех этапов проекта лежат в одной общей корневой папке проекта, благодаря чему можно одним движением пометить тегом как исходники, так и результаты. Как-то так...
|
|
|
|
|
Jul 12 2013, 10:34
|
Профессионал
    
Группа: Свой
Сообщений: 1 817
Регистрация: 14-02-07
Из: наших, которые работают за бугром
Пользователь №: 25 368

|
Цитата(Сергей Борщ @ Jul 12 2013, 12:14)  Логика подсказывает, что хранить нужно там, где используются. А мне - что там, где генерируется. Например, если один и тот же сгенерированный файл используется в нескольких проектах. Цитата а) не будет проблем привязки ревизий генерирующего репозитория к ревизиям использующего. По идее это должно быть решаемо настройкой четкой привязки использующего репозитария к ревизии генерирующего через svn:external. Или не?
|
|
|
|
|
Jul 12 2013, 15:34
|
Местный
  
Группа: Свой
Сообщений: 491
Регистрация: 16-01-05
Из: Санкт-Петербург
Пользователь №: 1 987

|
Цитата(syoma @ Jul 12 2013, 14:34)  По идее это должно быть решаемо настройкой четкой привязки использующего репозитария к ревизии генерирующего через svn:external. Или не? Именно так. Причем можно разные папки генерирующего использовать вразбивку (ссылка-то в виде URL/revision!).
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|