Удаление web.config из Subversion (проект ASP.NET)
-
09-06-2019 - |
Вопрос
У меня есть проект, исходный код которого контролируется с помощью Subversion и VisualSVN.Поскольку версии web.config на сервере и компьютерах разработчиков различаются, я хочу, чтобы файл оставался на компьютерах, но игнорировался Subversion.Я добавил его в svn:ignore, но он все еще остается (и все еще имеет красный восклицательный знак, поскольку мы его не фиксируем).
Как я могу безопасно удалить его из Subversion без его удаления из файловой системы?
Спасибо, Адин
Решение
вам придется выполнить операцию удаления и игнорирования
- сначала сделайте резервную копию вашего локального файла (как сказал @ibz)
- затем удалите web.config из репозитория.
- затем скопируйте обратно web.config в ту же папку
- наконец, используйте svn:ignore, чтобы Subversion не пыталась снова добавить его в репозиторий.
поскольку я использую tortoisesvn, я не могу сказать вам, какие команды svn вам нужно использовать, но при использовании tortoisesvn это будет:
- сделать резервную копию
- Щелкните правой кнопкой мыши web.config в папке под управлением источника, выберите Tortoisesvn | Удалить
- щелкните правой кнопкой мыши по web.config в папке под контролем версий, выберите SVN Commit => после этого вы заметите, что файл фактически удален из файловой системы
- Переместите вверх и щелкните правой кнопкой мыши на папке под управлением источника, выберите Tortoisesvn | Характеристики
- в окне свойств нажмите «Создать» + имя свойства «svn:ignore»;значение свойства «web.config».принять изменения
- зафиксировать изменения
в моих проектах .net я включаю следующее исключение с помощью svn:ignore:bin, obj, *.suo, *.user
Другие советы
В идеале вам также следует поддерживать версии серверной копии web.config в SVN.Обычно мы переименовываем рабочий файл web.config в web.config.prod (копия для каждой из сред), а инструмент сборки выбирает правильный файл и переименовывает его обратно в web.config при упаковке для развертывания.
svn rm --force web.config
svn commit
Прежде чем делать это, обязательно создайте резервную копию локальной копии (web.config), поскольку она будет удалена.
Я решил эту проблему, используя nant с ccnet.Следующий сценарий сборки nant заменяет файл web.test.config локальным файлом web.config;
<?xml version="1.0"?>
<project name="Project1" default="build">
<target name="init" depends="clean" />
<target name="clean" />
<target name="checkout"/>
<target name="compile"/>
<target name="deploy"/>
<target name="test"/>
<target name="inspect"/>
<target name="build" depends="init, checkout">
<call target="compile" />
<call target="inspect" />
<call target="test" />
<call target="deploy" />
</target>
<copy file="..\TestDeployments\Project1\Project1.Solution\Project1.Web.UI\web.Test.config"
tofile="..\TestDeployments\Project1\Project1.Solution\Project1.Web.UI\web.config"
overwrite="true"
/>
<delete file="..\TestDeployments\Project1\Project1.Solution\Project1.Web.UI\web.Test.config" />
</project>