Вопрос

У меня есть проект, исходный код которого контролируется с помощью 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>

Задача копирования NAnt

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top