2009-04-24 2 views
3

Я использую проекты веб-развертывания ASP.NET с TortoiseSVN и VisualSVN, но это общий вопрос о сгенерированных файлах в Subversion.Как заставить Subversion работать с автоматически сгенерированными файлами?

Проект веб-развертывания автоматически генерирует параллельную «развертывание» версии вашего веб-сайта со всем удаленным кодом и скомпилирован в единую сборку. Моя структура файла:

  • Магистральные
  • Магистральные/MyProject (сайт корень)
  • Магистральные/MyProject_deploy (развертывание корневого проекта)
  • Магистральные/MyProject_deploy/Release (сайт развертывания сайта, автоматически сгенерированный)

Возникла проблема: MyProject_deploy/Release регенерируется при сборке (в режиме Release). Каталог удаляется и воссоздается, поэтому я теряю все метаданные .svn; и когда я перехожу к фиксации, я получаю статус «Obstructed», который я просмотрел, и означает, что на сервере есть неуправляемая локальная папка с тем же именем, что и управляемая папка на сервере.

(я мог бы просто игнорировать папку Release, но я хочу сделать FTP развертывания непосредственно с сервера Subversion.)

Какой самый лучший способ справиться с автоматически сгенерированных файлов в Subversion?

ответ

14

Установите свойство svn: ignore. Не добавляйте их в свою систему контроля версий. Все, что генерируется процессом сборки, там не принадлежит. К чему относятся вещи, необходимые для завершения процесса сборки.

Я бы рекомендовал добавить в смесь непрерывный интегрированный сервер, такой как CruiseControl.NET, - он может построить проект из источника, а затем выполнить развертывание из этого. Это поставит вас в положение использования 2 лучших практик вместо 1 и решит вашу проблему.

1

Если вы используете Visual Studio, можете ли вы определить события pre и post-build для перемещения каталога .svn (или каталогов) из Release перед вашей сборкой, а затем обратно?

1

Это также является проблемой при использовании проектов установки для создания вывода установщика Windows.

Один из вариантов заключается в изменении Имя выходного файла, чтобы сгенерированные файлы были сброшены в корень проекта развертывания, а не в подпапку под названием «Release».

В случае проекта установки я создавал один файл MSI, и это сработало хорошо - никакие папки не удаляются/не создаются, поэтому нет ошибок SVN, и он чист только с двумя файлами в проекте развертывания Корневая папка.