В настоящее время я работаю над проектом ASP.NET с несколькими разработчиками, использующими Subversion для распространения кода, но на данный момент он совершенно запутан. Человек, который настроил хранилище Subversion, включил файлы конфигурации, специфичные для его компьютера, каталоги bin \ * и другие подобные вещи.
Я, будучи парнем, который должен проверить этот репозиторий и запустить его на моем компьютере, очень разочарован этим, поскольку мне потребовалось некоторое время, чтобы разобраться во всем, чтобы заставить его скомпилироваться вообще. Сейчас я думаю о том, чтобы написать документ для руководства Subversion, чтобы отправить его техническому руководителю моей компании, чтобы мы могли стандартизировать процесс и избежать подобных проблем.
То, что я ищу, - это информация о руководящих принципах. Вот начало для них, и, надеюсь, мы сможем сделать из этого что-то хорошее:
Файловая структура должна быть настроена так, чтобы сторонние библиотеки регистрировались вне выходных каталогов сборки (поскольку они не будут включены в репозиторий.) Имя этого каталога должно быть "Библиотеки".
Никакие машинные файлы не должны быть включены в Subversion. Таким образом, проверяется только шаблон Web.config, который настраивается разработчиками в соответствии со своей машиной. Это поведение включено в Visual Studio 2010 по умолчанию, и к отдельным файлам конфигурации (Web.Local.config
) автоматически применяется шаблон (Web.config
). Локальный файл конфигурации по-прежнему не должен быть включен в Subversion, если он применяется для конкретного компьютера.
Файлы решений и проектов не должны содержать никаких абсолютных путей.
Список игнорирования должен быть настроен. Начать с:
'
*.user
obj
'
Пример структуры файла для веб-сайта ASP.NET 2.0 с библиотекой классов, специфичной для веб-сайта, и сторонней библиотекой:
'
/trunk/
Libraries/
ThirdParty.dll
MyClassLibrary/
bin/ [Ignore]
obj/ [Ignore]
Properties/
AssemblyInfo.cs
SomeClass.cs
MyClassLibrary.csproj
- Holds references to third-party libraries. For example:
../Libraries/ThirdParty.dll
MyWebApplication/
bin/
ThirdParty.dll [Ignore; copied by build process]
ThirdParty.dll.refresh
- Contains "../Libraries/ThirdParty.dll"
Default.aspx
Default.aspx.cs
Web.config [Ignore]
Web.config.template
MySolution.sln
- Holds list of projects.
- Has reference information for projects.
'
Альтернативой использованию Web.config.template
было бы включение файла Local.config
из Web.config
, но это может быть менее гибким.
При использовании проекта веб-приложения, а не проекта веб-сайта, ссылки будут сохраняться в файле проекта, а не в файлах .refresh, поэтому папка bin / будет игнорироваться.
Может ли кто-нибудь увидеть ошибки в приведенных выше предложениях? Чего-то не хватает? У кого-нибудь есть предложения по списку игнорируемых? Я только что начал с нескольких записей на данный момент.