Как организовать SVN-репозиторий для кода C ++ - PullRequest
5 голосов
/ 21 декабря 2011

Я новичок в SVN и хочу передать код в SVN с помощью TortoiseSVN.У меня есть заголовки C ++ и исходный код, но я не знаю, как эффективно организовать папки перед загрузкой версии в SVN.Любые предложения о том, как люди обычно делают?Есть ли разница в структуре кодов для разных языков, например C ++ или Java.Должен ли я следовать каким-то конкретным правилам?

Обновление

Поэтому, проверив ответы, я немного прояснил ситуацию.Обычная структура папок для одного проекта следующая:

/trunk
/branches
/tags

Но я также нашел похожую структуру, которая мне очень понравилась:

/trunk                  #Keep it to developement mode always.
    /samples            #samples of use
    /modules            #software modules
       /project_modName
           /include     # .hpp files
           /src         # .cpp files
    /test               #unitary tests
/branches               #experimental developements (copies of trunk at various stages)
/tags                   #estable versions
/extras
    /3rdparty           #libs
    /data               #necessary data for developement
    /doc                #documentation
    /resources          #for window applications

По крайней мере, мне нравитсядля кода мультимедийных приложений.

ОБНОВЛЕНИЕ 2

Это обновление просто для объяснения того, как я создаю свой репозиторий.Я создал папку с именем structure_svn .Внутри я создал структуру, показанную выше.Я щелкаю правой кнопкой мыши по родительской папке и выбираю импорт.В URL я записываю путь к папке (file: /// c: / svn_repos), поэтому автоматически создается структура под svn_repos, без папки struct_svn .

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

Следующий шаг - успешно разделить мой код внутри созданной структуры.

Ответы [ 4 ]

9 голосов
/ 21 декабря 2011

Вот как я структурирую свое дерево в программном проекте (в основном с точки зрения C / C ++):

  • /
    • src & mdash; Исходные и заголовочные файлы написаны мной
    • ext & mdash; Внешние зависимости; содержит сторонние библиотеки
      • Имя_библиотека-1.2.8
        • включает & mdash; Заголовки
        • lib & mdash; Скомпилированные файлы lib
        • Donwload.txt & mdash; Содержит ссылку для скачивания используемой версии
    • ide & mdash; Я храню файлы проекта здесь
      • vc10 & mdash; Я размещаю файлы проекта по IDE
    • bin & mdash; Скомпилированные двоичные файлы идут сюда
    • obj & mdash; Файлы сборки компилятора
      • gcc & mdash; Если размер вашего проекта оправдывает это, создайте отдельную папку для файлов каждого компилятора
    • doc & mdash; Документация любого вида
    • README
    • INSTALL
    • КОПИРОВАНИЯ
    • makefile & mdash; Что-то для автоматизации генерации файлов проекта IDE. Я предпочитаю CMake.

Несколько заметок:

  1. Если я пишу библиотеку (и я использую C / C ++), я собираюсь сначала организовать свои исходные файлы в две папки с именами «src / include» и «src / source», а затем по модулю. Если это приложение, то я собираюсь организовать их просто по модулю (заголовки и источники будут находиться в одной папке).

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

Редактировать: Обратите внимание, что я использую Mercurial, а не SVN, поэтому структура над ним адаптирована для этой системы контроля версий. Во всяком случае, я вижу из вашего обновления, что вы уже нашли тот, который вам нравится.

4 голосов
/ 21 декабря 2011

У вас есть хорошее объяснение в следующем Ссылка , если вы новичок с SVN !!

4 голосов
/ 21 декабря 2011

В основном вы можете поместить в SVN именно то, что вы хотите.Единственный стандарт, который вы можете здесь придерживаться, - это стандартная схема хранилища: см. здесь :

В рамках проекта вы правы в том, что существует несколько лучших практик.И они разные для каждого языка.Например, пакет Java организован по пространству имен.В мире C ++ я видел два основных способа его организации:

  • Каждый класс в заголовок ( .h) и исходный файл ( .cpp) внутри одного и того жеdirectory
  • Заголовок и источник разделены (поэтому у вас есть папка, особенно для заголовков). Это полезно для библиотек, так что этот путь может использоваться проектами верхнего уровня.

Тогда вынужна папка для сторонних библиотек, другая для целевых файлов и другие, такие как файлы сборки или документация.

4 голосов
/ 21 декабря 2011

Один огромный шаг вперед - убедиться, что все ваши проекты выполняют сборки из исходного кода, т.е. поместите временный файл в $ TEMP и поместите весь выходной файл в специальный каталог bin / lib. Если все сделано правильно, это оставляет вас с исходными каталогами, содержащими только источник. Что в названии .. Помимо «чистых» исходных файлов также убедитесь, что все необходимое для сборки исходного кода находится в хранилище: файлы проекта / генераторы, ресурсы.

После того, как вы правильно это сделали, есть хороший шанс, что вам нужно всего лишь поместить несколько типичных файлов, сгенерированных проектом (например, * .suo для Visual Studio) в список игнорирования SVN, и вы готовы к фиксации.

...