2

Относительные пути в svn:externals

При переезде рабочего Subversion-репозитория на другой сервер «посыпались» экстерналы. Старый svn-репозиторий был не доступен, а правила для svn:externals были указаны в виде:

foo_ext http://old-server.com/repo/foo 
bar_ext http://old-server.com/repo/bar

И естественно выпадали в ошибки.

Здесь и далее рассматривается условный репозиторий с такой структурой: корень находится в repo, а мы хотим подключить внешние папки foo и bar в папку lib:

repo\
   |-- bar\
   |-- foo\
   +-- lib\
       |-- bar_ext
       +-- foo_ext

Захотелось во избежание подобных проблем в будущем указать пути относительно. Оказалось, такая возможность в Subversion доступна, начиная с версии 1.5. При этом был изменен формат описания подключения внешних папок. Старый формат также допустим, но только при указании абсолютных путей. Предыдущий пример в новом формате должен выглядеть так:

http://new-server.com/repo/foo foo_ext 
http://new-server.com/repo/bar bar_ext

Т.е. сначала путь, потом папка.

Допустимы несколько способов указания относительных путей:

../ — относительно текущей папки:

../../foo foo_ext 
../../bar bar_ext

^/ — относительно корня репозитория:

^/foo foo_ext 
^/bar bar_ext

// — независимо от схемы сети (http/https):

//new-server.com/repo/foo foo_ext 
//new-server.com/repo/bar bar_ext

/ —относительно корня сервера:

/repo/foo foo_ext 
/repo/bar bar_ext

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

2 комментария

  • Август 9, 2011 at 11:03 дп

    Переезжать нужно свном не с сервера на сервер, а на меркуриал :-)

  • dec5e
    Август 9, 2011 at 11:32 дп

    Это-то понятно, DVCS рулят :) Но не всегда есть такая возможность.

Leave a Reply

Copyright © 2017 — dec5e | Site design by Trevor Fitzgerald