我刚开始使用SVN,在源代码控制下有一个不需要的缓存目录。如何忽略SVN的整个目录/文件夹?
我在OS X和命令行上使用版本和TextMate。
我刚开始使用SVN,在源代码控制下有一个不需要的缓存目录。如何忽略SVN的整个目录/文件夹?
我在OS X和命令行上使用版本和TextMate。
当前回答
Bash联机程序多次忽略:
svn propset svn:ignore ".project"$'\n'".settings"$'\n'".buildpath" "yourpath"
其他回答
值得一提的是:
在命令行上不能使用
svn add *
这也将添加被忽略的文件,因为命令行展开*,因此svn add认为您希望添加所有文件。所以用这个代替:
svn add --force .
由于我花了一些时间试图让它工作,因此应该注意,如果文件已经存在于SVN中,那么您需要在SVN中删除它们,然后编辑SVN:ignore属性。
我知道这是显而易见的,但他们总是以?在我的svn状态列表,当我认为它只是忽略他们在本地。
也要注意后面的斜杠。我发现在我的忽略设置文件中包含images/*不会忽略./images/。当我运行svn status -u时,它仍然显示?图像。我把忽略设置改成只有图像,没有斜杠。做了状态检查,清除了。
在父目录上设置svn:ignore属性:
$ cd parentdir
$ svn ps svn:ignore . 'cachedir'
这将覆盖svn:ignore的任何当前值。你可以编辑值:
$ svn pe svn:ignore .
这将打开您的编辑器。您可以添加多个模式,每行一个。
您可以通过以下命令查看当前值:
$ svn pg svn:ignore .
如果你使用的是GUI,应该有一个菜单选项来做这件事。
"谢谢你" 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”。