Лучшие практики для проектов Subversion и Visual Studio - PullRequest
60 голосов
/ 14 ноября 2009

Я недавно начал работать над различными проектами C # в Visual Studio в рамках плана крупномасштабной системы, которая будет использоваться для замены нашей нынешней системы, построенной на основе объединения различных программ и скриптов, написанных на C и Perl. Проекты, над которыми я сейчас работаю, достигли критической массы из-за приверженности подрывной деятельности. Мне было интересно, что следует и не следует фиксировать в хранилище для проектов Visual Studio. Я знаю, что он будет генерировать различные файлы, которые являются просто артефактами сборки и не нуждаются в фиксации, и мне было интересно, есть ли у кого-нибудь совет по правильному использованию SVN с Visual Studio. В данный момент я использую сервер SVN 1.6 с бета-версией Visual Studio 2010. Любые советы, мнения приветствуются.

Ответы [ 7 ]

89 голосов
/ 14 ноября 2009

Согласно MSDN :

Вы можете добавить следующие файлы в систему управления версиями Visual Studio:

  • Файлы решений (*.sln).
  • Файлы проекта, например, *.csproj, *.vbproj файлы.
  • Файлы конфигурации приложения, основанные на XML, используемые для управления поведением во время выполнения проекта Visual Studio.

К файлам, которые нельзя добавить в систему управления версиями, относятся следующие:

  • Файлы опций решения пользователя (*.suo).
  • Файлы опций пользователя проекта, например, *.csproj.user, *.vbproj.user файлы.
  • Файлы веб-информации, например *.csproj.webinfo, *.vbproj.webinfo, которые управляют виртуальным корневым расположением веб-проекта.
  • Создание выходных файлов, например, *.dll и *.exe файлов.
16 голосов
/ 14 ноября 2009

Я бы предложил использовать AnkhSVN - плагин управления исходным кодом Subversion для Visual Studio 2008 / 2010.

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

15 голосов
/ 14 ноября 2009

Поместите следующие файлы в систему управления версиями:

  • .dsw (рабочее пространство VS6)
  • .dsp (проект VS6)
  • .sln (VS Solution)
  • . * Proj (VS Проектные файлы различных типов)
  • конечно ваши исходные файлы и другие артефакты, которые вы создаете

Do not помещает следующие файлы в систему управления версиями:

  • .ncb (что-то связанное с просмотром страниц или intellsense)
  • .suo (пользовательские настройки рабочего пространства, такие как размещение окон и т. Д. - я думаю)
  • .user (настройки пользовательских проектов, такие как точки останова и т. Д. - я думаю)

Кроме того, не помещайте никакие объектные файлы, исполняемые файлы, автоматически сгенерированные файлы (например, заголовки, которые могут быть сгенерированы).

Что касается исполняемых файлов и других сгенерированных файлов - может быть исключение, если вы хотите иметь возможность архивировать выпуски. Это может быть хорошей идеей, но вы, вероятно, захотите управлять этим немного по-другому и, возможно, в другом месте, чем ваш исходный код. Если вы сделаете это, также заархивируйте ваши файлы .pdb, чтобы вы могли отладить их позже. Возможно, вы захотите использовать Сервер символов для хранения ваших архивных символов (см. Средства отладки для Windows для сервера символов и его документацию).

Вот мой список VS-специфичных файлов, которые я исключаю из SVN:

Ankh.Load
*.projdata
*.pdb
*.positions
*proj.user
*proj.*.user
*.ncb
*.suo
*.plg
*.opt
*.ilk
*.pch
*.idb
*.clw
*.aps
11 голосов
/ 14 ноября 2009

Уровень решения:

  • добавить файл решения .sln
  • игнорировать .suo файл пользовательских настроек решения

Уровень проекта:

  • добавить файлы .csproj, .vbproj (и c ++ proj?)
  • игнорировать .csproj.user, .vbproj.user файлы
  • игнорировать каталог bin
  • игнорировать каталог obj
  • игнорировать любые файлы / каталоги, которые генерируются во время выполнения (т. Е. Журналы)

Если вы используете надстройки VS и они могут создавать файлы, которые также необходимо игнорировать (т. Е. ReSharper создает файлы .resharper и .resharper.user).

Элементы игнорирования могут быть явно проигнорированы по имени файла (т. Е. MyProject.csproj) или по шаблону (например, *.csproj.user).


После того, как вы настроили свои игнорирующие устройства, проверили чистую копию вашего исходного кода, сборка не должна показывать никаких изменений (т. Е. Новых неверсированных файлов).

5 голосов
/ 14 ноября 2009

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

Мой глобальный шаблон игнорирования:

.dll .pdb .exe .cache .webinfo .snk bin obj debug _Resharper .user resharper

2 голосов
/ 27 мая 2010

Если вы используете список игнорирования, SVN чувствителен к регистру. Поэтому не забывайте игнорировать папки bin и Bin отдельно.

Кроме того, у меня возник вопрос ... почему несколько раз требуется много времени, чтобы обновить значок состояния? Временами это сбивает с толку.

1 голос
/ 15 июня 2010

См. Mercurial .hgignore для проектов Visual Studio 2008 для списка игнорирования Mercurial. Я не знаком с синтаксисом списка игнорирования SVN, но у этого потока есть несколько хороших списков того, что игнорировать в Visual Studio.

...