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

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


当前回答

感谢以上所有的贡献。我只是想分享一些额外的信息,从我的经验忽略文件。


当文件夹已经处于修订控制之下时

在svn导入和svn co文件后,我们通常第一次做什么。

所有运行时缓存、附件文件夹都将受到版本控制。 因此,在SVN ps SVN:ignore之前,我们需要从存储库中删除它。

在SVN 1.5版本以上,我们可以使用SVN del——keep-local your_folder, 但对于早期版本,我的解决方案是:

SVN导出文件夹的干净副本(没有.svn隐藏文件夹) SVN del本地和存储库, svn ci 复制文件夹 是否svn st并确认文件夹被标记为“?” 现在我们可以根据解做svn ps了


当我们需要忽略多个文件夹时

在一个目录下,我有两个文件夹需要设置为svn:ignore 如果我们设置了一个,另一个就会被移除。 然后我们想知道我们是否需要svn

SVN PE需要编辑文本文件,如果需要设置文本编辑器,可以使用该命令:

export SVN_EDITOR=vi

用“o”你可以打开一个新的行 输入要忽略的所有文件夹名称 按“esc”键退出编辑模式 输入“:wq”,然后按Enter键保存并退出

该文件看起来就像这样:

runtime
cache
attachments
assets

其他回答

...如果您想忽略多个目录(比如build/ temp/和*.tmp文件),您可以分两步完成(忽略第一步并编辑忽略属性(参见这里的其他答案),或者可以编写如下内容

svn propset svn:ignore "build
temp
*.tmp" .

在命令行中。

"谢谢你" 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”。

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

感谢以上所有的贡献。我只是想分享一些额外的信息,从我的经验忽略文件。


当文件夹已经处于修订控制之下时

在svn导入和svn co文件后,我们通常第一次做什么。

所有运行时缓存、附件文件夹都将受到版本控制。 因此,在SVN ps SVN:ignore之前,我们需要从存储库中删除它。

在SVN 1.5版本以上,我们可以使用SVN del——keep-local your_folder, 但对于早期版本,我的解决方案是:

SVN导出文件夹的干净副本(没有.svn隐藏文件夹) SVN del本地和存储库, svn ci 复制文件夹 是否svn st并确认文件夹被标记为“?” 现在我们可以根据解做svn ps了


当我们需要忽略多个文件夹时

在一个目录下,我有两个文件夹需要设置为svn:ignore 如果我们设置了一个,另一个就会被移除。 然后我们想知道我们是否需要svn

SVN PE需要编辑文本文件,如果需要设置文本编辑器,可以使用该命令:

export SVN_EDITOR=vi

用“o”你可以打开一个新的行 输入要忽略的所有文件夹名称 按“esc”键退出编辑模式 输入“:wq”,然后按Enter键保存并退出

该文件看起来就像这样:

runtime
cache
attachments
assets

如果您正在使用特定的SVN客户端TortoiseSVN,那么在提交时,您可以选择右键单击项目并选择“添加到忽略列表”。