Рекомендации по проектам Subversion и Visual Studio

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

7 ответов


согласно MSDN:

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

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

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

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

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

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


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

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

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

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

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

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

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

Ankh.Load
*.projdata
*.pdb
*.positions
*proj.user
*proj.*.user
*.ncb
*.suo
*.plg
*.opt
*.ilk
*.pch
*.idb
*.clw
*.aps

решение уровня:

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

проект:

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

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

элементы ignore могут быть явно проигнорированы по имени файла (т. е. MyProject.csproj) или по шаблону подстановочных знаков(т. е. *.csproj.user).


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


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

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

.файл DLL. распределительная плата. исполняемый.кэш.webinfo по .snk bin obj debug _Resharper .пользователей для ReSharper


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

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


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