代码之家  ›  专栏  ›  技术社区  ›  Chicago

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

svn
  •  2
  • Chicago  · 技术社区  · 16 年前

    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 回复  |  直到 16 年前
        1
  •  3
  •   Tom    16 年前

    顺便说一句,目录名后面总是有一个斜杠,这表示它是一个目录。否则它看起来像一个没有扩展名的文件。

        2
  •  1
  •   tfga    11 年前

    下面是解析 svn info (蟒蛇+ 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>
    

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

        3
  •  0
  •   Jean    16 年前

    客户端,并假设您有某种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
    

     svn info $PATH
    

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