如何在SVN中设置自定义属性(并获取所有设置的文件)?

时间:2012-12-06 07:34:32

标签: svn tortoisesvn

我有一个svn存储库,我正在寻找为文件添加自定义属性的可能性。

稍后我想从存储库中获取包含给定属性的所有文件,其中包含给定值。

示例:

我想设置名为label的文件的属性,其值为123_ABC

之后我想将所有标记为“123_ABC”的文件从存储库中删除。

这有可能吗?

我正在使用SVN和TortoiseSVN

2 个答案:

答案 0 :(得分:0)

  1. 您应该了解属性使用的相反方向暗示
  2. 您无法获取只知道属性值的文件,忽略属性名称,因为同一文件的不同属性可以具有相同的值
  3. 对于您的任务(从属性到文件),您必须这样做
    • 对存储库中的所有文件使用枚举
    • 应用svn propget label(或svn proplist)并验证结果

答案 1 :(得分:0)

您是否正在搜索所有具有此属性的文件以进行所有修订?是的,这是可能的,但它很慢而且不容易做到:

$ svn log --diff $REPO

这将执行日志的差异。当它看到属性差异时,它将打印出属性差异,就像Subversion在区分文件时那样。当然,这会分散日志中的所有文件,这非常非常慢,并产生大量输出。您可以使用grep或类似的东西来查找版本。

然而,如果你这样做,你可能会跑到楼下去星巴克,等一下喝咖啡。哎呀,跑到那个好咖啡馆的街区,等你喝一杯拿铁咖啡。更好的是,飞往意大利,跑到海岸,在等待的时候在咖啡馆里喝一杯拿铁咖啡。这需要一段时间。

如果你发现这让你对这种做法感到沮丧,那就太好了!


或者,您只是在当前工作目录中的特定文件上搜索此属性吗?如果是这样,情况就不那么糟了:

$ svn plist --depth=infinity --verbose .

这将打印出工作目录中所有文件的所有属性及其值。这需要一段时间,但不会那么长。你很幸运能在它完成之前到达星巴克楼下。再次,我会将其传递给less,然后搜索我正在寻找的属性。由于您使用的是Windows,请保存此命令生成的输出,并使用Notepad ++之类的内容来搜索该文件。