Структура репозитория SVN

Необходимо приняться за решение этой проблемы и с и со статическим анализом во время выполнения.

Для статического анализа рассматривают компиляцию с PREfast (cl.exe /analyze). Это обнаруживает не соответствовавший delete и delete[], переполнение буфера и хост других проблем. Будьте готовы, тем не менее, пробраться через многие килобайты предупреждения L6, особенно если Ваш проект все еще имеет L4 не зафиксированный.

PREfast доступен с Системой Команды Visual Studio и, , по-видимому , как часть Windows SDK.

6
задан Nick Vaccaro 19 November 2009 в 23:16
поделиться

6 ответов

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

Вместо этого мы рассмотрели схему, подобную следующей:

  trunk
    app1
    app2
    lib1
    lib2
  branches
    rc-2.0
      app1, app2, lib1, lib2...
    some-devs-branch
      app1, lib2
  tags
    release-1.0
      app1, app2, lib1, lib2...

Мне нравится иметь отдельное репо полностью для сторонних материалов. Если вы не планируете реализовать полную стратегию ветвления поставщиков из книги красных бобов , это будет работать хорошо.

12
ответ дан 8 December 2019 в 16:04
поделиться

У нас есть тоже боролся с этим.

Мы обнаружили, что совсем скоро некоторые разделяемые библиотеки станут частью нескольких приложений, и вы захотите, чтобы все было в одной версии. Поэтому мы решили собрать все, что делаем, в одном хранилище. Мы работаем таким образом более 2 лет и считаем, что с ним очень удобно работать.

У всех конфигураций есть свои плюсы и минусы, но имея 1 полный репозиторий, вы можете быть (почти) уверены, что у вас есть все файлы вместе на правильная версия. Если вы работаете с несколькими транками, есть трюки с виртуальными папками или ссылками (я забыл термин), чтобы они связывались друг с другом, но вернуться к тому состоянию, в котором вы были, очень сложно.

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

2
ответ дан 8 December 2019 в 16:04
поделиться

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

Например, представьте себе службу, которая также имеет набор тестов и базу данных

/project1/application1/
                      trunk/
                            Src
                            Test
                            Database
                      tags/
                      branches/
         application2/
                      trunk/
                            Src
                            Test
                      tags/
                      branches/                       

Это позволяет нам иметь несколько приложений, связанных с проектом, но управлять выпуском для каждой «логической» границы приложения. Подумайте, где / что вам нужно для управления выпуском, и установите их в качестве местоположения структуры ветки / тегов / ствола.

Мне не нравится отдельная папка ствола / веток / тегов в корне всего репозитория, потому что я я не хочу, чтобы проверялся весь ствол, и в результате я не хочу возиться с частичными проверками веток. (Вы можете не согласиться, и ваш пробег может отличаться и т. Д.)

1
ответ дан 8 December 2019 в 16:04
поделиться

SVN предоставляет теги для создания «моментального снимка» исходного дерева в определенное время (которое вы можете использовать для выпусков и т. Д.).

Но если вы намереваетесь чтобы сделать ваш репозиторий «более детализированным», возможно, вам стоит рассмотреть возможность создания нескольких репозиториев.

Конечно, в папке «trunk» вы должны установить любую обычную иерархию каталогов, которую вы бы сделали, если бы не использовали исходный код контроль.

0
ответ дан 8 December 2019 в 16:04
поделиться

Мы всегда создаем отдельный репозиторий SVN для каждого отдельного «решения». Тогда этот репозиторий будет иметь только простую структуру ствола, ветвей и тегов.

Любые зависимые фреймворки (где мы контролируем исходный код) будут иметь свой собственный отдельный репозиторий. Затем мы обычно просто включаем двоичные файлы (определенной версии) в любой проект, в котором они используются.

0
ответ дан 8 December 2019 в 16:04
поделиться

Наличие одного репо для всего означает, что у вас есть довольно хорошие шансы быстро получить огромный репозиторий. Это означает, что все может замедлиться, и его будет немного сложно отслеживать. Очевидно, это зависит от вашего конкретного варианта использования, но лично я бы выбрал репозитории для каждого проекта и при необходимости использовал svn: externals.

На самом деле, я бы предпочел распределенную VCS вместо SVN, если это возможно, но каждому свое ...

0
ответ дан 8 December 2019 в 16:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: