4

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

这些文件在运行时显示svn status

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

例如

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 指定多个要忽略的特定文件?

4

3 回答 3

9

一线解决方案:

svn propset svn:ignore "file1"$'\n'"file2"$'\n'"file3" .
于 2013-01-17T15:38:04.113 回答
8

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

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

...vnix$您的外壳程序的主要提示符在哪里,并且>是辅助提示符。

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

或者,在标准输入上给它一个文件:

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

另请参阅红皮书,尽管该示例对于您的特定场景不是很明确。

于 2012-12-13T18:38:02.990 回答
3

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

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

您的分叉流必须是:

  1. 在 SVN 中添加所有需要的文件
  2. 对于作为构建器目标的文件夹,添加. 忽略模式
  3. 通过构建测试运行测试模式和阻塞的完整性并检查svn stWC 根目录中的输出
于 2012-12-13T18:52:55.433 回答