如何使用svnlook检查路径是文件夹还是文件?

时间:2009-12-03 15:50:15

标签: svn

这是来自svn docs(http://svnbook.red-bean.com/en/1.1/re44.html

$ svnlook changed -r 39 /usr/local/svn/repos
A   trunk/vendors/deli/
A   trunk/vendors/deli/chips.txt
A   trunk/vendors/deli/sandwich.txt
A   trunk/vendors/deli/pickle.txt

我可以检查尾部斜杠(“/”),如果存在,那么它就是一个文件夹。

1)但是如何确保svn始终显示带有斜杠的文件夹路径?

2)或者,可能有更可靠的方法来检查路径类型(文件夹或文件)?

3 个答案:

答案 0 :(得分:3)

AFAIK对目录名称始终会有一个斜杠,因为这表示它是一个目录。否则它看起来像没有扩展名的文件。

答案 1 :(得分:1)

以下是解析svn info(Python + pysvn)输出的替代方法:

from pysvn import Client, node_kind

client = Client()

def isDir(url):

    infoList = client.info2(url, recurse=False)
    _, info = infoList[0]

    return info.kind == node_kind.dir

在您的具体情况下,由于您在服务器上,甚至可以使用file://网址:

file://<absolute path to repo>/<relative path to file/dir within repo>

这样您就不会通过网络层 - 这可能会节省一些时间。

答案 2 :(得分:0)

客户端并假设你有某种unix shell 您可以将'A'部分切掉,然后简单地测试路径是否是使用shell提供的功能的目录。

之类的东西
set TEST=`cat test.txt | cut -c5-`
for p in $TEST;do
 if [[ -d $p ]];then
   echo "$p is a directory"
 fi
done

您可以使用服务器端:

svnlook dirs-changed REPOS_PATH

检测更改的目录,然后从“svnlook changed”中将它们从更改日志中过滤掉,或者您可以使用:

 svn info $PATH

在每条路径上并检查节点类型,尽管这可能会很慢。