Июл 2

SVN. Игнорирование файла, папки

Категория: Программирование

Иногда бывает удобным установить игнорирование определенного файла в SVN, что бы на него не реагировали команды commit(ci) или update(up).Поясню.
Предположим у вас есть ноутбук, на котором домашняя версия разрабатываемого проекта, то есть свой конфигурационный файл(далее “конфиг”, который например лежит в папке application/), в котором хранятся настройки соединения с базой данных или путь к локальному smtp-серверу, в общем данные специфичные для работы в домашних(локальных) условиях.
Вы приходите с ноутбуком на работу и делаете коммит своих домашних настроек в общий репозиторий SVN, люди делают up и у них соответственно “грохается” соединение с базой и тому подобные интересные вещи. Участником такого обвала можете стать вы сами если тоже самое проделает ваш напарник, принеся свой конфиг в репозиторий. В принципе подменить пару строчек в файлике не проблема но, всё же, если это делать каждый день после апдейта - изрядно надоедает.
Выход из ситуации прост, SVN настолько крут, что позволяет игнорировать какие угодно вам файлы. Как это сделать вы можете прочитать в мануале по SVN на тему “svn propedit svn:ignore”, или по диагонали пробежаться по тексту, написанному мной ниже.
Что бы исключить файл config.ini, который в папке application из всех транзакций SVN’а, делаем нижеследующие шаги:

  1. Делаем копию подопытного файла у себя на винчестере, так как нам позже прийдется его восстанавливать;
  2. заходим по ssh в корневую папку вашего проекта;
  3. (опционально) исполняем команду svn st, что бы убедиться, что у нас нет незалитых изменений. Если такие есть, делаем svn ci;
  4. удаляем из SVN файл config.ini командой svn del - - force appication/config.ini ;
  5. делаем svn ci -m “config.ini R.I.P”;
  6. далее воспользуемся командой svn propedit svn:ignore application/ . Команда svn propedit редактирует свойство (property edit), svn:ignore собственно имя свойства, application/ имя папки, на которую распространяется это свойство;
  7. В открывшемся редакторе vi, необходимо вписать имя файла в папке application/ в нашем случае config.ini или вместо имени файла написать маску, например *.ini;
  8. Далее 2 раза ESC, затем “Shift+:” и “wq!”;
  9. Следующим шагом делаем svn ci -m “application/config.ini ignored”;
  10. Далее нам нужно восстановить файл config.ini в папочку application/ (файлик берем оттуда, куда мы его положили в п.1);
  11. после чего добавляем этот файл в SVN командой svn add application/config.ini;
  12. делаем svn ci -m “WOW! Config.ini! OMG! O_o”.

Если вдруг в процессе выполнения вышеописанных шагов система пишет что-то типа

Sending        application svn: Commit failed (details follow): svn: Your file or directory '.' is probably out-of-date svn: The version resource does not correspond to the resource within the transaction.  Either the requested version resource is out of date (needs to be updated), or the requested version resource is newer than the transaction root (restart the commit).

не разочаровуйтесь, делайте svn up и её должно попустить.

Если вы чего-то не так сделали, в любой момент можно удалить свойство svn с помощью команды

svn propdel svn:ignore application/     и начать всё сначала :)

//спасибо за посильную информативную помощь комраду Josser’у.

Нет комментариев

Оставить комментарий

Вы должны войти для получения возможности оставлять комментарии.