命令svn list
将为我提供当前目录中所有子目录的列表。
但是,它仅限于当前版本中存在的目录。
例如。说存储库网址是:
“http://www.example.com/svncode/mainproduct/trunk” 在trunk中,有3个目录
trunk/
1/
2/
3/
如果我svn list
,它会显示所有目录1 2 3
。
现在有人在trunk中进行提交,在trunk中添加了另一个目录4
。
有没有办法在没有先更新的情况下检查该目录的存在?由于svn list
仅提供最新svn update
之前的信息,而不是之后发生的更改。
后台:我想要检索trunk中存在的最新目录(最大数字表示最新,在这种情况下为4),并且只想检查中继代码库的那部分,而不是完整主干。
答案 0 :(得分:6)
svn ls http://www.example.com/svncode/mainproduct/trunk
答案 1 :(得分:5)
你可以在服务器上:
svn ls http://server/repo
答案 2 :(得分:2)
如果您只对目录感兴趣并想要排除文件:
svn list -R http://www.example.com/svncode/mainproduct/trunk| grep -E '/$'
答案 3 :(得分:1)
如其他答案所述:在存储库网址上使用svn list
。
请注意,如果您在记住/输入URL时遇到问题,可以使用svn info
的输出来获取与当前工作目录对应的URL。结合起来:
svn list `svn info | grep URL | cut -b6-`
答案 4 :(得分:0)
用于SVN本地使用:
svn ls svn://yourlocaladdresssvn
答案 5 :(得分:0)
如果存储库中的位置' trunk-branches-tags fork的路径不一致,我们必须使用类似@ bernard-de-rubinat建议的过滤器,但改为:
svn ls -R https://some.server.com/svn/someRoot | grep '/trunk/$'
这仅选择与以... / trunk /结尾的字符串模式匹配的递归ls的输出。
这将只选择名为trunk的目录。