Svn 如何确定远程版本项目是目录还是文件?

Svn 如何确定远程版本项目是目录还是文件?,svn,Svn,Subversion中是否有类似ls-l的实用程序 目的是区分文件和目录。有svnls命令,但它只列出所有文件和目录,因此如果提交的文件没有扩展名,它看起来就像一个目录 比如说 M/trunk/Database/Base M/trunk/Database/Upgrade M/trunk/Database/readme readme是这里的一个文件 这可以通过一个脚本来完成,该脚本将合并svn status和ls-l的输出,在svn ls的输出中,任何以/结尾的行都是一个目录。如果没有/和条目的

Subversion中是否有类似
ls-l
的实用程序


目的是区分文件和目录。有
svnls
命令,但它只列出所有文件和目录,因此如果提交的文件没有扩展名,它看起来就像一个目录

比如说

M/trunk/Database/Base
M/trunk/Database/Upgrade
M/trunk/Database/readme

readme
是这里的一个文件

这可以通过一个脚本来完成,该脚本将合并
svn status
ls-l
的输出,在
svn ls
的输出中,任何以
/
结尾的行都是一个目录。如果没有
/
和条目的结尾,则它是一个文件

您还可以使用svnls--verbose的输出,在“file length”列(日期戳前面的一列)中查找整数,并对其进行解析。如果没有整数,它就是一个目录。如果有,它就是一个文件。

好的。。。知道了。。 svn info就是答案

例如:

这里的“节点类型”提供了我需要的信息

您可以使用命令确定路径是表示文件还是目录

运行命令
svn infohttp://svn.apache.org/repos/asf/subversion/trunk/tools
结果将是:

Path: tools
URL: http://svn.apache.org/repos/asf/subversion/trunk/tools
Relative URL: ^/subversion/trunk/tools
Repository Root: http://svn.apache.org/repos/asf
Repository UUID: 13f79535-47bb-0310-9956-ffa450edef68
Revision: 1663737
Node Kind: directory
Last Changed Author: danielsh
Last Changed Rev: 1663005
Last Changed Date: 2015-03-01 00:31:24 +0300 (Sun, 01 Mar 2015)
Path: README
Name: README
URL: http://svn.apache.org/repos/asf/subversion/trunk/README
Relative URL: ^/subversion/trunk/README
Repository Root: http://svn.apache.org/repos/asf
Repository UUID: 13f79535-47bb-0310-9956-ffa450edef68
Revision: 1663738
Node Kind: file
Last Changed Author: danielsh
Last Changed Rev: 1242804
Last Changed Date: 2012-02-10 18:58:53 +0400 (Fri, 10 Feb 2012)
“节点种类:目录”项表示
/asf/subversion/trunk/tools
是一个目录

运行命令
svn infohttp://svn.apache.org/repos/asf/subversion/trunk/README
结果将是:

Path: tools
URL: http://svn.apache.org/repos/asf/subversion/trunk/tools
Relative URL: ^/subversion/trunk/tools
Repository Root: http://svn.apache.org/repos/asf
Repository UUID: 13f79535-47bb-0310-9956-ffa450edef68
Revision: 1663737
Node Kind: directory
Last Changed Author: danielsh
Last Changed Rev: 1663005
Last Changed Date: 2015-03-01 00:31:24 +0300 (Sun, 01 Mar 2015)
Path: README
Name: README
URL: http://svn.apache.org/repos/asf/subversion/trunk/README
Relative URL: ^/subversion/trunk/README
Repository Root: http://svn.apache.org/repos/asf
Repository UUID: 13f79535-47bb-0310-9956-ffa450edef68
Revision: 1663738
Node Kind: file
Last Changed Author: danielsh
Last Changed Rev: 1242804
Last Changed Date: 2012-02-10 18:58:53 +0400 (Fri, 10 Feb 2012)
“节点类型:文件”项表示
/asf/subversion/trunk/README
是一个文件


您可以将
--xml
命令行选项添加到
svn info
命令,以获得更易于解析的xml输出:

svn信息http://svn.apache.org/repos/asf/subversion/trunk/README --xml

<?xml version="1.0" encoding="UTF-8"?>
<info>
<entry
   path="README"
   revision="1663740"
   kind="file">
<url>http://svn.apache.org/repos/asf/subversion/trunk/README</url>
<relative-url>^/subversion/trunk/README</relative-url>
<repository>
<root>http://svn.apache.org/repos/asf</root>
<uuid>13f79535-47bb-0310-9956-ffa450edef68</uuid>
</repository>
<commit
   revision="1242804">
<author>danielsh</author>
<date>2012-02-10T14:58:53.499287Z</date>
</commit>
</entry>
</info>

http://svn.apache.org/repos/asf/subversion/trunk/README
^/subversion/trunk/README
http://svn.apache.org/repos/asf
13f79535-47bb-0310-9956-ffa450edef68
丹尼尔什
2012-02-10T14:58:53.499287Z

“如果提交的文件没有扩展名,它看起来就像一个目录”-目录也可以命名为
something.ext
-使目录看起来像一个文件。如果需要通过URL查看存储库,这将不起作用-它只对工作副本起作用。脚本可以是智能的-如果当前文件夹不是工作副本,它将只使用
ls-l
。当我读到它时,他想要类似于
ls-l
的东西,这样他就可以识别工作副本中的目录和文件。如果它不是工作副本,他首先就不需要svn命令,也不会尝试使用svn命令(或合并两者的脚本)。正确。我正在考虑将默认的
ls
替换为一个结合了
svn st
ls-l
功能的
新ls
。如果pwd不是工作副本,它只是默认为
ls-l
。无论如何,一个好的解决方案似乎就是我上面提出的(即使我们不替换默认的ls),如果你需要检查目录中的每一项以确定它是文件还是目录,那么似乎需要做很多额外的工作。无论如何,似乎没有比这更好的选择,至少对我的要求。