Управление кодом проекта с использованием SVN - PullRequest
2 голосов
/ 01 декабря 2009

Я начал работать над проектом. Я хотел бы сохранить этот проект, используя Subversion. Я установил сервер VisualSVN и TortoiseSVN.

Этот проект состоит из нескольких маленьких проектов. Некоторые из них мне нужны каждый раз, некоторые нет. Вопросы:

  1. Стоит ли хранить весь проект в одном каталоге проекта subversion?
  2. А как насчет файла sulution (* .sln)? Должно ли оно храниться и в SVN?
  3. На проекте есть какая-то платформа (она будет использоваться в других проектах позже). Но мне это нужно каждый раз, когда я работаю с базовым проектом. Есть ли удобный способ извлечения / экспорта моего базового и фреймворкового проекта сразу из разных каталогов SVN?
  4. Если мне нужно работать только над частью проекта, что мне делать?

Ответы [ 10 ]

5 голосов
/ 01 декабря 2009
  1. Да, короче - но вы сможете передумать позже

    Типичная структура каталогов для проекта subversion:

    project/branches
    project/trunk
    project/tags
    

    Сначала вы поместите весь код в транк, а затем при необходимости создадите теги и ветви.

    Возможно, вы захотите сначала сохранить все вместе в одной структуре папок проекта svn, потому что это будет проще (вам не придется возиться с файлом решения).

    Если позже вы захотите разделить части проектов на отдельные проекты svn по отдельности, вы можете выполнить 'svn rename' и создать для них стандартные папки веток, транка и тегов. Вам просто нужно изменить ссылки в файле решения или использовать подход svn: externals.

  2. Абсолютно - вы должны хранить в репозитории все, что не было сгенерировано при сборке. Создайте svn: игнорируйте атрибуты в сгенерированных папках (таких как каталоги obj и bin), поэтому «svn status» даст вам полезную обратную связь, если вы забыли добавить важный файл.

  3. Существует механизм svn: externals, который позволяет вам создать ссылку на другое место в хранилище Subversion (или внешнем хранилище Subversion) - который может помочь вам иметь возможность извлекать из одной папки. Возможно, вы захотите сделать ссылку svn: external на определенный тег платформы, чтобы изменения в структуре других людей не нарушали ваш проект.

    svn: внешние факторы могут привести к путанице, поэтому используйте с осторожностью.

  4. Вы можете проверить на любом уровне в иерархии папок в Subversion

2 голосов
/ 01 декабря 2009

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

Да, я храню файлы .sln, но игнорирую файлы .suo и cproj.user. Я также игнорирую папки bin и obj.

Если вы храните свой "каркасный" проект в одном репозитории, вы просто извлекаете папку ствола и все готово. Если вы храните его в другом хранилище, вы можете проверить концепцию externals

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

Книга SVN может помочь вам узнать больше.

1 голос
/ 01 декабря 2009

Поскольку вы рассматриваете возможность использования нескольких репозиториев SVN, вам следует учитывать следующее: коммитирование в репозитории SVN является атомарным. Не допускается внесение изменений, которые применяются к нескольким репозиториям.

Даже если вы единственный человек, использующий ваш SVN-репозиторий, практическое правило заключается в том, что система предназначена для того, чтобы (теоретически) любой мог обновиться в любое время и не рисковать получением исходного кода, который не компилируется из-за плохой работы. время.

В заключение, если могут быть изменения, которые необходимо применить к файлам A и B одновременно для сохранения возможности компиляции проекта, то A и B должны находиться в одном и том же хранилище.

1 голос
/ 01 декабря 2009

Я настроил наш внутренний репозиторий SVN следующим образом:

SVN-Root
    - trunk
        - Projects (for each project one folder,
                    Solutions are in separate folder)
    - tag
        - Projects
    - branch
        - Projects

Хотя я читал о другой установке, подобной этой:

SVN-Root
    - Solution1
        - trunk
        - tag
        - branch
    - Solution2
        - trunk
        - tag
        - branch
1 голос
/ 01 декабря 2009

Храните все в одном каталоге. В основе каталога должен быть файл решения. Это также должно храниться в SVN (что значительно упрощает получение решения из SVN на новом компьютере).

Для каркасного проекта - попробуйте включить его в решение, а затем сослаться на него в базовом проекте решения.

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

0 голосов
/ 01 декабря 2009

Вероятно, зависит от того, как вы хотите организовать вещи, насколько большие отдельные части, и что работает для вас. Эксперимент немного.

Одна вещь, на которую вы можете обратить внимание, это внешние: (http://svnbook.red -bean.com / ru / 1.0 / ch07s03.html ). Это позволяет вам извлекать файлы и папки из других репозиториев.

0 голосов
/ 01 декабря 2009

Настройка вашего хранилища Subversion - это тема, в которой представлено много разных мнений. Ответ ниже основан на моем личном опыте и предпочтениях:

  1. Я рекомендую хранить несколько модулей проекта в одном репозитории. Это облегчает проверку проекта во всей его полноте. Когда вы помещаете подпроекты в их собственные подкаталоги в своем основном проекте, можно также проверить отдельные подпроекты самостоятельно.
  2. Я не уверен, что такое * .sln файл, но если он необходим для сборки проекта, он должен быть в вашем хранилище. Если он создан (или может быть легко создан) и зависит от системы, он не должен быть частью вашего хранилища.
  3. Возможно включить части других хранилищ, используя функцию externals svn.
  4. См. Мой ответ в пункте 1.
0 голосов
/ 01 декабря 2009

Для меня - эмпирическое правило 1 SVN REPO = 1 РЕШЕНИЕ

Я также проверяю файл .sln и применяю одинаковую структуру каталогов для всех людей, работающих над проектом

0 голосов
/ 01 декабря 2009

1.) Как вам это нравится. Это полностью зависит от вас. Вы хотите обрабатывать несколько папок Subversion или только одну?

2.) Да, конечно. Храните только те файлы, которые относятся к конкретному пользователю (например, .user).

3.) Нет. Ну, может быть. Если вы используете AnkhSVN в качестве проекта Visual Studio, вы можете обновить решение, и все папки проекта будут обновлены вместе с ним.

4.) Работа только с этим проектом; -)

0 голосов
/ 01 декабря 2009
  1. Вы можете сохранить проект в соответствии со своей структурой каталогов. Практическое правило: один csproject для одного каталога svn
  2. Да, вы должны хранить sln в SVN. Вы можете поместить этот sln в одну из директорий вашего проекта (обычно в папке GUI csproject)
  3. Для этого вам нужно использовать командную строку SVN; Вы можете написать пакетный скрипт для этой цели.
  4. Вы можете просто оформить заказ на соответствующий проект и работать над ним.
...