Svn 如何确定远程版本项目是目录还是文件?
Subversion中是否有类似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的输出中,任何以/结尾的行都是一个目录。如果没有/和条目的
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),如果你需要检查目录中的每一项以确定它是文件还是目录,那么似乎需要做很多额外的工作。无论如何,似乎没有比这更好的选择,至少对我的要求。