【问题标题】:How to set svn:ignore with multiple values?如何使用多个值设置 svn:ignore?
【发布时间】:2011-06-16 08:48:04
【问题描述】:

假设我想为目录 dir1 设置 svn:ignore 属性具有多个值,file1file2 em> 和 file3。 如何在不使用文本编辑器(设置属性值)的情况下通过命令行执行此操作?

【问题讨论】:

    标签: svn


    【解决方案1】:

    键入与此处完全相同的换行符:

    svn propset svn:ignore "file1
    file2
    file3" dir1
    

    如果你想从另一个命令传递一个列表,试试xargs。 不幸的是,svn 命令不允许从stdin-F - 读取。

    【讨论】:

    • 谢谢。我假设您的意思是“propset”(不是“propget”)
    • 糟糕与否,与 CVS 相比,这一次是新鲜事物。现在它与 git、hg、bzr 等相比可能看起来已经过时了,但在许多项目中仍然运行良好。
    【解决方案2】:

    一线解决方案:

    svn propset svn:ignore "file1"$'\n'"file2"$'\n'"file3" dir1
    

    【讨论】:

    • ^ 替换字符存在的情况下,这对我来说工作得很好,该替换字符用于在属性 svn:externals 中指定 svn 存储库的根目录。多行解决方案不起作用,因为 shell 试图解释 ^
    • 这很好用,但我想知道为什么。 $ 字符在这里做什么?它通常用于启动变量,对吗?另请注意,\n 周围的单引号是必需的,并且必须是单引号,而文件名周围的双引号仅在它们具有空格等特殊字符时才需要。
    【解决方案3】:

    添加多个条目要容易得多。使用以下命令:

    svn propedit svn:ignore .
    

    这将打开一个文本编辑器。现在您可以轻松添加多个条目。

    【讨论】:

    • 只有在你设置了svn编辑器的情况下,你可以通过export SVN_EDITOR=vi来完成
    • ...或者只是 $EDITOR
    【解决方案4】:

    用途:

    cat > ignorelist << END
    file1
    file2
    file3
    END
    
    svn propset svn:ignore -F ignorelist dir1
    

    或者没有外部文件,假设您使用的是 Linux 或带有 /dev/fd 的系统:

    svn propset svn:ignore -F /dev/fd/0 dir1 << END
    file1
    file2
    file3
    END
    

    【讨论】:

    • 谢谢,很清楚。但是如何在不使用外部文件的情况下设置属性值呢?
    • 关于/dev/fd:指的是什么?软盘? /proc/PID/fd/?还是别的什么?
    • /dev/fd/0 是对标准输入的引用——它可以用在命令需要文件名而输入数据没有存储在文件中的情况下
    【解决方案5】:

    在PowerShell中:

    $ignore = "*.dll`n*.xml"
    svn propset svn:global-ignores $ignore .
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-27
      • 1970-01-01
      • 2019-11-17
      • 2012-06-30
      • 2021-04-15
      • 1970-01-01
      • 2017-02-17
      • 2019-03-28
      相关资源
      最近更新 更多