如何“svn忽略”一个文件,而不覆盖现有的忽略列表

时间:2014-06-18 16:16:23

标签: windows svn

我想在我们的登记中递归地忽略一堆文件,例如/bin/obj以及*.user。我在一个名为.svnignore的文件中列出了所有这些模式的列表。我可以将这个忽略列表递归地应用到每个目录中,如下所示:

  

svn propset svn:ignore -R -F .svnignore。

当我们添加新项目和内容时,我经常运行它。但是,现在我想忽略只是根目录中的/QEData目录(递归,只有一个实例)。因此,运行上面的命令后,我运行:

  

svn propset svn:忽略QEData。

但是,似乎消除了根目录上.svnignore的所有模式,并将其替换为 /QEData模式。如何在不使用覆盖该目录中的现有忽略的情况下添加到忽略列表

注意:我正在寻找可以在Windows和/或PowerShell上编写脚本的答案。

2 个答案:

答案 0 :(得分:2)

非交互式Windows类型propedit

echo NEWSTRING> PATH\TO\TEMPFILE
svn pg PROPERTY >> PATH\TO\TEMPFILE
svn ps PROPERTY -F PATH\TO\TEMPFILE .
del PATH\TO\TEMPFILE

每个这样的伪pe将在属性值列表的末尾添加两个空字符串,空行在处理时忽略SVN

关于global-ignore

的说明

使用

svn propget svn:global-ignores -v
Properties on '.':
  svn:global-ignores
    *.dat

和WC一样

dir /B /S
z:\WC\a.txt
z:\WC\Sub
z:\WC\b.dat
z:\WC\Sub\c.dat
z:\WC\Sub\d.txt

状态为

svn st --no-ignore
?       Sub
I       b.dat

即,简而言之 - 如果进入WC的目录,定义了svn:global-ignores模式,则在此子目录中添加了subdir和文件,匹配和不匹配模式,提交时选择所有需要的TortoiseSVN 只需要对象

TSVN Commit

答案 1 :(得分:1)

这有帮助吗?

echo -e "`svn propget svn:ignore`\nQEData" | svn propset svn:ignore -F - .

<强>更新

这可以作为脚本添加忽略

的基础
#!/bin/sh

if [ $# -ne 1 ]
then
    echo -e "Usage: `basename $0` <something to be ignored>\n"
    exit 1
fi

IGNORE=$1

echo -e "`svn propget svn:ignore`\n$IGNORE" | svn propset svn:ignore -F - .