【问题标题】:Find paths with svn:external properties with certain string?使用特定字符串查找具有 svn:external 属性的路径?
【发布时间】:2011-07-04 08:24:00
【问题描述】:

我有一个非常大的 subversion 存储库,大小约为 7 GB,包含来自不同项目的许多文件和目录。

现在我对一个实际上是一个库的项目结构进行了一些重大更改,并且我在同一个存储库中的许多其他项目中使用它。现在文档很少,我不知道哪个项目真正使用这个库作为外部库,我想以某种方式查询颠覆服务器/存储库以返回所有在 svn:export 属性中具有特定字符串的目录所以我可以调整它们。

理想情况下,如果不检查整个存储库,由于所有分支和标签都会出现问题。

这可能以某种聪明的方式实现吗?

谢谢

【问题讨论】:

    标签: svn svn-externals


    【解决方案1】:

    如果只是一些更改,快速而肮脏的方法是使用带有 --recursive 标志的 svn propget 来获取属性,然后手动进行更改(这可能需要一段时间才能返回):

    svn propget --recursive svn:externals http://your.svn.server/ | grep -B 5
    

    要以更自动化的方式执行此操作,您可以编写脚本:

    • 递归检索根目录中每个路径的 svn:externals

    • 检出外部包含您要查找的字符串的目录(如果您想对检出的内容有选择性,可以通过文件系统分隔符拆分路径组件并使用 depth=immediate 检出每个组件)

    • 进行并提交更改

    这样做的好处是,因为您的签出有效地反映了您的存储库(即使它缺少大量内容),您可以在顶层进行一次提交,并进行所有更改。

    HTH。

    【讨论】:

    • 就是这样,太棒了!
    • 是否可以将svn propget --recursive 仅限于目录?我发现(我认为)它也递归扫描文件,这是一个巨大的问题,因为一些存储库需要一天的时间来获取这些信息(通过网络)
    • 不,我认为这不可能。如果你觉得很勇敢,你可以看看 svn api(它是 C 语言,但有多种语言的扩展)。我以前用它递归地检查存储库中的所有目录以进行大规模更改(例如更新外部)。如果您有任何编码经验,那么它是一个相当不错的 API。
    • 我认为这里的 5 表示我们要显示前面的 5 行。但是 sn-p 中缺少所需的字符串?应该是5点之后吧?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-28
    • 2021-11-13
    • 1970-01-01
    • 2010-09-21
    • 1970-01-01
    • 1970-01-01
    • 2011-05-13
    相关资源
    最近更新 更多