【问题标题】:Subversion: Files added although svn:ignore is setSubversion:尽管设置了 svn:ignore,但添加了文件
【发布时间】:2014-05-26 13:00:36
【问题描述】:

(编者按:由于问题还没有解决,我也在这里转贴:https://softwareengineering.stackexchange.com/questions/241406/subversion-files-added-although-svnignore-is-set

在我的应用程序的基本目录中,我设置了:

$ cd .../trunk
$ svn propget svn:ignore .
log
tmp

这是为了确保目录 log 和 tmp 不受颠覆控制。

当我在我的项目中创建许多新文件,并想将它们添加到 subversion 时,我通常会这样做

$ svn add --force *

我正在使用--force,因为新文件位于多个子目录中。如果我不使用 --force,svn 将停止递归查看那些已经在版本控制之下的目录。

但是,我刚刚注意到 --force 似乎也忽略了 svn:ignore 列表,因为该命令还添加了 tmp 树内的文件。

现在我的问题:

(1) 我怎样才能正确地只添加那些不在不被忽略的目录下的新文件?

(2) 从版本控制中删除所有添加到 tmp 和日志下的所有新文件和目录的最简单方法是什么?当然,它们仍应放在后备箱中。

【问题讨论】:

    标签: svn svnignore


    【解决方案1】:

    仔细阅读svn help(你必须使用propset命令,而不是propget)+svn help ps

    Subversion 可以识别以下特殊版本的属性 一个目录:

    svn:ignore         - A list of file glob patterns to ignore, one per line.
    

    您不能在单个命令中为 svn:ignore 定义多行值:您必须使用 -F FILE 选项才能从文件中读取值或使用 ps+pe 对 (propset+propedit) 按顺序有两个被忽略的模式

    当你得到 svn 时:忽略与这里相同的结果

    >svn pl -v
    Properties on '.':
      svn:ignore
        log
        tmp
    

    然后这些文件夹中的(未版本化的)文件将在提交时被忽略

    >dir /B /S
    z:\WC\a.txt
    z:\WC\b.txt
    z:\WC\log
    z:\WC\tmp
    ...
    z:\WC\log\a.txt
    z:\WC\log\b.txt
    z:\WC\tmp\a.txt
    z:\WC\tmp\b.txt
    

    但是

    >svn st
     M      .
    ?       a.txt
    ?       b.txt
    

    【讨论】:

    • 我发现我的原始帖子具有误导性;我忘了这样标记我的代码,这给人一种错误的印象,即我会使用 propget 来设置属性。实际上,我的设置方式与您建议的完全相同(请再次查看我的帖子 - 我对其进行了编辑以使其清楚),并且我在帖子中使用“propget”只是为了证明 svn:ignore 的值是正确的。也许您可以使用此信息再次查看我的问题?
    • 其实我并没有使用propset -F,设置属性,而是propedit。我更喜欢使用 propedit 来设置属性,因为这样我就不会意外删除现有的属性值。
    猜你喜欢
    • 2015-09-24
    • 2015-05-25
    • 1970-01-01
    • 2019-08-06
    • 2011-09-04
    • 2021-01-18
    • 2019-09-17
    • 2011-12-20
    • 1970-01-01
    相关资源
    最近更新 更多