【问题标题】:How to make SVN ADD ignore binaries如何使 SVN ADD 忽略二进制文件
【发布时间】:2010-02-03 10:24:12
【问题描述】:

二进制文件(在 Linux 下)没有扩展名,因此我无法使用模式排除它们。因此,当我使用SVN add 添加目录时,我会得到类似

$ svn add recursion_vector/
A         recursion_vector
A         recursion_vector/rec_vec.cxx
A         recursion_vector/rec_vec.h
A  (bin)  recursion_vector/rec_vec

这里rec_vec 是我想排除的可执行文件。 SVN 显然将其识别为二进制。现在我可以告诉 Subversion 忽略所有二进制文件吗?

【问题讨论】:

  • 请注意:忽略所有二进制文件也会忽略其他二进制文件。例如,您可能希望将其包含在存储库中的图标。
  • 是的,但这是我可以接受的,因为我通常只签入代码而不签入图标。

标签: svn binary directory add ignore


【解决方案1】:

这有点冗长,因为它使用了 find:

find [TARGET-DIRECTORY] \( -executable -type f \) -prune -o -print | xargs svn add --depth empty

将目标目录传递给 find,find 将递归该目录,打印出除可执行文件 (\( -executable -type f \) -prune) 之外的所有内容。如果没有-type f find 也会修剪目录,因为这些目录通常设置了执行位或“搜索位”。

add 上的 --depth empty 选项告诉 svn 不要自己递归文件对象,因为 find 正在处理递归。

如果你喜欢这个结果,你可以把它放在一个 shell 函数中,这样你就可以为[TARGET-DIRECTORY] 传递参数。

谢谢,

扎卡里

【讨论】:

    【解决方案2】:

    您能否设置模式匹配以排除其中没有 . 的文件名?

    【讨论】:

    • 迄今为止最好的主意 :) 当然,它也会触发名为 README 和类似文件的文件,但我没有这些文件,所以也许我应该这样做。
    • @fuenfundachtzig 您还可以匹配其中没有. 的文件名,也可以匹配[a-z]+。如果您使用 README 文件,那么它们可能都是 [A-Z]+...
    【解决方案3】:

    这不是你想要的(你可能已经知道这个答案)......但无论如何:

    您可以设置排除模式以根据文件名忽略某些文件。伟大的 SVN 书籍中的更多信息:

    http://svnbook.red-bean.com/en/1.1/ch07s02.html#svn-ch-7-sect-2.3.3

    除此之外,也许可以用提交钩子做一些事情,但我没有这些经验......

    祝你好运!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-04
      • 2021-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-15
      • 2011-04-01
      相关资源
      最近更新 更多