我刚开始使用SVN,在源代码控制下有一个不需要的缓存目录。如何忽略SVN的整个目录/文件夹?
我在OS X和命令行上使用版本和TextMate。
我刚开始使用SVN,在源代码控制下有一个不需要的缓存目录。如何忽略SVN的整个目录/文件夹?
我在OS X和命令行上使用版本和TextMate。
当前回答
"谢谢你" 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”。
其他回答
我有问题得到嵌套目录被忽略;我想忽略的顶部目录不会显示“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
由于我花了一些时间试图让它工作,因此应该注意,如果文件已经存在于SVN中,那么您需要在SVN中删除它们,然后编辑SVN:ignore属性。
我知道这是显而易见的,但他们总是以?在我的svn状态列表,当我认为它只是忽略他们在本地。
因为你使用的是版本,它实际上非常简单:
浏览签出的副本 单击要忽略的目录 在右侧的“忽略”框中单击“编辑” *类型。*忽略所有文件(或*. JPG仅用于JPG文件,等等)
如果您正在使用特定的SVN客户端TortoiseSVN,那么在提交时,您可以选择右键单击项目并选择“添加到忽略列表”。
设置svn:ignore属性。大多数UI svn工具都有办法做到这一点,以及链接中的命令行讨论。