четверг, 3 июня 2010 г.

Удаление svn:externals для файла

Что такое svn:externals?
Это атрибут, который можно установить любому каталогу в репозитарии. Он позволяет подгружать файлы и каталоги с другого места.
(За деталями сюда - http://svnbook.red-bean.com/en/1.0/ch07s03.html)
До версии subversion-1.6 возможно было указать только ссылки на внешние каталоги. То есть внешний файл было невозможно указать.
С версии 1.6 появилась возможность указывать в svn:externals и отдельные файлы. Но существует несколько особенностей про которые нужно помнить:

  1. Невозможно указать ссылку на файл во внешнем репозитарии( а на каталог возможно ).
  2. Особенная процедура удаления ссылки на внешний файл (поскольку файл добавляется в локальную копию, как любой другой файл с репозитария).

Для удаления ссылки на внешний файл необходимо:

  1. Отредактировать либо удалить аттрибут  svn:externals и сделать коммит.
  2. Удалить папку содержащую внешний файл. Просто удаления файла - недостаточно.
  3. Обновиться для востановления удаленной папки ( "svn up" )
  4. Шаг 2 и 3 необходимо провести каждому пользователю репозитария поскольку "svn up" ничего не даст.

Вся загвоздка в пункте 4. 
Допустим у Вас был внешний файл прописанный через svn:externals, а затем Вы убрали внешнюю ссылку на файл и завели отдельную его копию. Никто и никогда про это не узнает и все будут пользоваться старым файлом пока не выполнят пункт 4.

1 коммент.:

Анонимный комментирует...

на сегодняшний день (svn 1.6 и выше) можно также и файлы экстернить. думаю, это свойство рано или поздно до ума доведут.
по пункту 2 - спасибо за инфу, думал надо удалять всю копию и checkout выполнять.. оказалось проще. но 4-й пункт не отменяется)))

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

Не забудьте добавить себя в постоянные читатели и включить уведомления о новых комментариях, либо воспользуйтесь RSS каналом ;)