使用svn忽略多个特定文件

时间:2012-12-13 17:37:06

标签: svn

我们的构建系统会生成许多散布在源树周围的文件。

运行svn status

时显示的这些文件

在下面的示例中,所有文件都带有'?'在thirdparty目录中已由构建系统生成。

e.g。

svn status
M       common/db/unit_test/src/db_payload_builder_test_suite.cpp
?       common/db/unit_test/Makefile
M       common/lib/osal/variant/linux/public_inc/osal_specific_msgq.hpp
M       common/lib/enb/public_inc/enb_service.h
?       thirdparty/lib/curl/public_inc_arm
?       thirdparty/lib/curl/public_inc_x86
?       thirdparty/lib/curl/originals/config.log
?       thirdparty/lib/curl/originals/libcurl.pc
?       thirdparty/lib/curl/originals/config.status
?       thirdparty/lib/curl/originals/libtool
?       thirdparty/lib/curl/originals/curl-config
?       thirdparty/lib/curl/originals/src/curl

我想告诉svn忽略这些文件。我不能简单地指定应该被忽略的目录,因为许多这些目录包含签入存储库的源。

上面的示例是生成的文件的子集,我们不能使用忽略模式,因为某些生成的文件与我们不希望忽略的文件匹配(例如xxx_.h“)

我尝试过使用svn propset svn:ignore 'somefile' dir,但我只能告诉svn忽略每个目录的一个特定文件。

如何为svn指定多个特定文件以忽略?

3 个答案:

答案 0 :(得分:9)

一线解决方案:

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

答案 1 :(得分:8)

你可以传递一个要忽略的文件列表,每行一个

vnix$ svn propset svn:ignore 'config.log
> libcurl.pc
> config.status
> libtool
> curl-config' thirdparty/lib/curl/originals

...其中vnix$是您的shell的主要提示,而>是辅助提示。

不要害怕,这就是你在shell中编写多行字符串的方式。

或者,在stdin上提供一个文件:

vnix$ svn propset svn:ignore -F - thirdparty/lib/curl/originals <<HERE
> config.log
> libcurl.pc
> config.status
> libtool
> curl-config
> HERE

另请参阅Red Book,尽管该示例对您的特定情况并不十分明确。

答案 2 :(得分:3)

如果你开始阅读文档,你会发现,

  • svn:ignore可以应用于包含必须忽略的文件的文件夹,而不仅仅是该文件夹的父文件
  • svn:忽略定义文件模式,默认情况下将在svn addsvn status中忽略,但仅适用于未版本控制的文件。已受版本控制的文件不受svn:ignore
  • 的影响

你的forkflow必须是:

  1. 在SVN中添加所有需要的文件
  2. 对于作为构建器目标的文件夹,添加 ignore-pattern
  3. 通过测试运行构建并检查WC根目录中svn st的输出来测试模式和阻塞的完整性