我刚开始使用SVN,在源代码控制下有一个不需要的缓存目录。如何忽略SVN的整个目录/文件夹?
我在OS X和命令行上使用版本和TextMate。
我刚开始使用SVN,在源代码控制下有一个不需要的缓存目录。如何忽略SVN的整个目录/文件夹?
我在OS X和命令行上使用版本和TextMate。
当前回答
在花了很多时间寻找如何做这个简单的活动后,我决定在帖子上找到一个像样的解释并不难。
首先让样本结构
$ SVN st ? 项目/箱子/目标 ? 项目/箱子/ myfile.x
1 -首先配置编辑器,在我的情况下vim 出口SVN_EDITOR = vim
2 -“svn propedit svn:ignore project/trunk/”将打开一个新文件,您可以在case类型“target”中添加您的文件和子目录保存并关闭文件和工作
$ SVN st ? 项目/箱子/ myfile.x
谢谢。
其他回答
忽略多个条目的命令有点棘手,需要反斜杠。
svn propset svn:ignore "cache\
tmp\
null\
and_so_on" .
该命令将忽略当前目录中命名为cache、tmp、null和and_so_on的所有内容。
设置svn:ignore属性。大多数UI svn工具都有办法做到这一点,以及链接中的命令行讨论。
设置父目录的svn:ignore属性:
svn propset svn:ignore dirname .
如果有多个内容要忽略,请在属性值中用换行符分隔。在这种情况下,使用外部编辑器编辑属性值更容易:
svn propedit svn:ignore .
值得一提的是:
在命令行上不能使用
svn add *
这也将添加被忽略的文件,因为命令行展开*,因此svn add认为您希望添加所有文件。所以用这个代替:
svn add --force .
"谢谢你" 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”。