如何使SVN ADD忽略二进制文件

6

在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忽略所有二进制文件?


只是一句话:忽略所有二进制文件也会忽略其他二进制文件,比如图标,你可能想要将其包含在存储库中。 - Sam
是的,但我可以接受这一点,因为我通常只检查代码而不是图标。 - fuenfundachtzig
3个回答

2

这段内容有点冗长,因为它使用了find命令:

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

将目标目录传递给find命令后,find会递归地打印出该目录中除可执行文件以外的所有内容(\( -executable -type f \) -prune)。如果没有 -type f选项,find也会剪枝目录,因为这些目录通常具有执行位或“搜索位”。

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

如果您喜欢这个结果,您可以将其放入一个shell函数中,以便允许您传递[TARGET-DIRECTORY]的参数。

谢谢,

Zachary


1
你能设置一个模式匹配来排除那些文件名中没有 . 的文件吗?

到目前为止最好的想法 :) 当然,它也会在名为README和类似文件上触发,但我没有这些文件,所以也许我应该采用这个。 - fuenfundachtzig
@fuenfundachtzig 你也可以匹配那些没有 . 的文件名,也可以匹配 [a-z]+。如果你在处理 README 文件,那么它们可能都是 [A-Z]+... - masher

0
这不完全是你想要的(而且你可能已经知道了这个答案)...但无论如何:
您可以设置排除模式来忽略一些基于文件名的文件。更多信息请参阅优秀的SVN书籍:

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

除此之外,可能可以通过提交钩子来做一些事情,但我没有相关经验...

祝你好运!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接