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



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

727   7  

7 ответов:

Согласно MSDN :

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

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

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

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

Я бы предложил использовать AnkhSVN - Subversion Source control plugin для Visual Studio 2008/2010.

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

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

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

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

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

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

Что касается исполняемых файлов и других сгенерированных файлов - может быть исключение, если вы хотите иметь возможность архивировать релизы. Это может быть хорошей идеей, но вы, вероятно, захотите управлять этим немного иначе и, возможно, в другом месте, чем ваш исходный код. Если вы это сделаете это, также архив ваш .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++ proj?) файлы
  • игнорировать .csproj.user, .vbproj.user файлы
  • игнорировать каталог bin
  • игнорировать каталог obj
  • игнорируйте любые файлы / каталоги, которые создаются во время выполнения (т. е. журналы)

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

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


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

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

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

.файл DLL .распределительная плата .exe.кэш.webinfo .СНК ОГРН obj-файлы отладки _Resharper .пользователь resharper

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

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

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

Comments

    Ничего не найдено.