2017-01-01 3 views
0

Когда текущий рабочий каталог является рабочей копией SVN, я могу использовать '^' в качестве сокращения для URL-адреса репозитория.Ссылка на URL-адрес репозитория рабочей копии в SVN?

Есть также красивое сокращение URL-адреса рабочей копии, так что svn list <???>/../ не адресует родительский каталог рабочей копии, а родительский каталог рабочей копии внутри репозитория. Каким будет ярлык для <???>, если таковой имеется?

ответ

0

Кажется, что нет такого ярлыка. В качестве обходного пути я придумал эту функцию Баш:

function svnurls() { 
    svn info &>/dev/null || return 
    local d=$(svn info | sed -n -e '/^URL/s/.*: //p') 
    local i=0 
    while ! [[ "$d" =~ ^[^:]*:/$ ]]; do 
    echo $i $d 
    typeset -g svn$i="${d}" 
    d=${d%/*} 
    i=$((i+1)) 
    done 
} 

Сначала он проверяет, является ли он называется в рабочей копии СВН и немедленно возвращается, если это не так.

Если да, то это хранилище URL отбирает рабочую копию от svn info и обеспечивает его, а также всех его предков в переменных оболочки svn0, svn1 и так далее. Кроме того, предок URLs печатаются в командной строке для удобства в последующих командах, которые могут быть такие вещи, как:

svn list $svn1 # list repository parents of working copy 
svn switch $svn1/branches/mybranch # assuming standard layout and trunk checkout 

(Подсказка: синтаксис ^/branches не работает в хранилищах, где ствол и ветви нескольких проектов и теги могут быть глубже в иерархии).

Смежные вопросы