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

如何使用svnlook检查路径是文件夹还是文件?,svn,Svn,这是来自svn文档() 我可以检查尾随斜杠(“/”),如果它存在,那么它就是一个文件夹 1) 但如何确保svn始终显示带有尾随斜杠的文件夹路径? 2) 或者,也许有更可靠的方法来检查路径类型(文件夹或文件)?AFAIK在目录名上始终会有一个尾随斜杠,因为这表示它是一个目录。否则它看起来像一个没有扩展名的文件。客户端,假设您有某种unix shell 您可以删除“A”部分,然后使用shell提供的函数简单地测试路径是否为目录。差不多 set TEST=`cat test.txt | cut -c5

这是来自svn文档()

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

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


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

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

客户端,假设您有某种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”(svnlook changed)中将其从更改日志中筛选出来,或者您可以使用:

 svn info $PATH

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

这里有一个替代方法,可以解析
svn info
(Python+)的输出:

来自pysvn导入客户端,节点类型
client=client()
def isDir(url):
infoList=client.info2(url,recurse=False)
_,info=infoList[0]
return info.kind==node\u kind.dir
在您的特定情况下,由于您在服务器上,您甚至可以使用
file://
URL:

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

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

我认为这不会起作用,因为我在预提交钩子中的服务器上使用了svnlook。服务器上实际上不存在这些路径哦,对不起,我没有注意到这是服务器端。您可以使用svn信息并检查节点类型
file://<absolute path to repo>/<relative path to file/dir within repo>