此工作副本';SVN中的存储库URL速记?

此工作副本';SVN中的存储库URL速记?,svn,Svn,当当前工作目录是SVN工作副本时,我可以使用“^”作为存储库URL的缩写 工作副本的URL也有一个很好的简写,这样svn list/./就不会指向工作副本的父目录,而是指向存储库中工作副本的父目录。如果有的话,的快捷方式是什么?似乎没有这样的快捷方式。作为一种解决方法,我提出了以下bash函数: function svnurls() { svn info &>/dev/null || return local d=$(svn info | sed -n -e '/^URL/

当当前工作目录是SVN工作副本时,我可以使用“^”作为存储库URL的缩写


工作副本的URL也有一个很好的简写,这样
svn list/./
就不会指向工作副本的父目录,而是指向存储库中工作副本的父目录。如果有的话,
的快捷方式是什么?

似乎没有这样的快捷方式。作为一种解决方法,我提出了以下bash函数:

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
}
它首先检查是否在svn工作副本中调用它,如果不是,则立即返回

如果是,它会将工作副本的存储库url从
svn info
中变为灰色,并在shell变量
svn0
svn1
等中提供它以及它的所有祖先。此外,祖先URL打印在命令行上,以便在后续命令中参考,可以是:

svn list $svn1  # list repository parents of working copy
svn switch $svn1/branches/mybranch # assuming standard layout and trunk checkout
(提示:语法
^/branchs
在多项目存储库中不起作用,在这些存储库中,主干、分支和标记可以位于层次结构的更深处)