我刚开始使用SVN,在源代码控制下有一个不需要的缓存目录。如何忽略SVN的整个目录/文件夹?

我在OS X和命令行上使用版本和TextMate。


当前回答

我有问题得到嵌套目录被忽略;我想忽略的顶部目录不会显示“svn status”,但所有的subdirs都显示了。这对其他人来说可能是不言而喻的,但我想分享一下:

例子:

/树干 /中继/缓存 /trunk/cache/subdir1 /trunk/cache/subdir2

cd /trunk
svn ps svn:ignore . /cache
cd /trunk/cache
svn ps svn:ignore . *
svn ci

其他回答

也要注意后面的斜杠。我发现在我的忽略设置文件中包含images/*不会忽略./images/。当我运行svn status -u时,它仍然显示?图像。我把忽略设置改成只有图像,没有斜杠。做了状态检查,清除了。

因为你使用的是版本,它实际上非常简单:

浏览签出的副本 单击要忽略的目录 在右侧的“忽略”框中单击“编辑” *类型。*忽略所有文件(或*. JPG仅用于JPG文件,等等)

保存SVN将忽略的目录:

这将从存储库中删除文件,但将目录保持在SVN的控制下:

SVN delete——keep-local path/directory_to_keep/*

然后设置忽略目录(和所有内容):

SVN propset SVN:ignore“*”path/directory_to_keep

"谢谢你" svn用如此丑陋,虚伪和难以忽视文件的方式。

所以我写了一个脚本svn-ignore-all:

#!/bin/sh

# svn-ignore-all

# usage: 
#   1. run svn status to see what is going on at each step 
#   2. add or commit all files that you DO want to have in svn
#   3. remove any random files that you don't want to svn:ignore
#   4. run this script to svn:ignore everything marked '?' in output of `svn status`

svn status |
grep '^?' |
sed 's/^? *//' |
while read f; do
    d=`dirname "$f"`
    b=`basename "$f"`
    ignore=`svn propget svn:ignore "$d"`
    if [ -n "$ignore" ]; then
        ignore="$ignore
"
    fi
    ignore="$ignore$b"
    svn propset svn:ignore "$ignore" "$d"
done

另外,为了忽略特定的文件/路径名列表,我们可以使用这个变体svn-ignore。我认为svn-ignore-all应该像xargs svn-ignore一样。

#!/bin/sh

# svn-ignore

# usage:
#   svn-ignore file/to/ignore ...

for f; do
    d=`dirname "$f"`
    b=`basename "$f"`
    ignore=`svn propget svn:ignore "$d"`
    if [ -n "$ignore" ]; then
        ignore="$ignore
"
    fi
    ignore="$ignore$b"
    svn propset svn:ignore "$ignore" "$d"
done

还有一件事:我倾向于用许多随机文件污染我的svn签出。当提交的时候,我将这些文件移动到“old”子目录中,并告诉svn忽略“old”。

下面是一个目录结构示例:

\project
    \source
    \cache
    \other

当在项目中,您看到您的缓存目录没有添加,并显示为这样。

> svn status
M  source
?  cache

若要设置ignore属性,请执行

SVN propset SVN:ignore cache。

其中svn:ignore是您正在设置的属性的名称,cache是属性的值,以及。是要设置此属性的目录。它应该是需要该属性的缓存目录的父目录。

检查设置了哪些属性:

> svn proplist
Properties on '.':
  svn:ignore

查看svn的值:ignore:

> svn propget svn:ignore
cache

删除先前设置的属性。

svn propdel svn:ignore