How do I ignore a directory with SVN?
我刚开始使用SVN,我有一个缓存目录,在源代码控制下我不需要它。如何使用svn忽略整个目录/文件夹?
我在OS X和命令行上使用版本和textmate。
设置父目录的
1 | svn propset svn:ignore dirname . |
如果要忽略多个内容,请在属性值中用换行符分隔。在这种情况下,使用外部编辑器更容易编辑属性值:
1 | svn propedit svn:ignore . |
下面是一个目录结构示例:
1 2 3 4 | \project \source \cache \other |
当在
1 2 3 | > svn st M source ? cache |
要设置忽略属性,请执行
svn propset svn:ignore cache .
其中
要检查设置了哪些属性:
1 2 3 | > svn proplist Properties on '.': svn:ignore |
查看
1 2 | > svn propget svn:ignore cache |
要删除以前设置的属性:
1 | svn propdel svn:ignore |
重要提示:
在你不能使用的命令行上
1 | svn add * |
这也会添加被忽略的文件,因为命令行扩展了
1 | svn add --force . |
由于我花了一段时间试图让它工作,应该注意的是,如果SVN中已经存在这些文件,那么需要对它们执行
我知道这似乎很明显,但他们一直出现在我的
要稍微展开,如果使用svn命令行工具执行此操作,则需要键入:
1 | svn propedit svn:ignore path/to/dir |
它将打开您选择的文本编辑器,然后键入"*"忽略其中的所有内容,并保存+退出-这将在SVN中包含目录本身,但忽略其中的所有文件,忽略目录,使用父目录的路径,然后在文件中键入目录的名称。保存后,运行更新("svn up"),然后签入适当的路径。
在父目录上设置
1 2 | $ cd parentdir $ svn ps svn:ignore . 'cachedir' |
这将覆盖EDOCX1的任何当前值〔0〕。编辑值时使用:
1 | $ svn pe svn:ignore . |
这将打开您的编辑器。您可以添加多个模式,每行一个。
可以使用以下选项查看当前值:
1 | $ svn pg svn:ignore . |
如果您使用的是GUI,那么应该有一个菜单选项来执行此操作。
感谢以上所有贡献。我只想分享一些额外的信息,从我的经验,而忽略文件。
当文件夹已受修订控制时
在SVN导入和SVN合并文件之后,我们通常会第一次这样做。
所有运行时缓存、附件文件夹都将受版本控制。所以,在svn ps svn:ignore之前,我们需要从存储库中删除它。
使用上面的SVN版本1.5,我们可以使用
当我们需要忽略多个文件夹时
- 在一个目录中,我有两个文件夹需要设置为
svn:ignore 。 - 如果我们设置一个,另一个将被移除。
- 那么我们想知道我们需要SVN PE
1 | export SVN_EDITOR=vi |
该文件看起来很简单:
1 2 3 4 | runtime cache attachments assets |
先删除它…
如果您的目录
1 | svn rm --keep-local foo |
……然后忽略:
1 | svn propset svn:ignore foo . |
…如果您想忽略多个目录(例如,
1 2 3 | svn propset svn:ignore"build temp *.tmp" . |
在命令行上。
如果您使用的是特定的SVN客户机Tortoissesvn,那么在提交时,您可以选择右键单击项目并选择"添加到忽略列表"。
忽略多个条目的命令有点复杂,需要反斜杠。
1 2 3 4 | svn propset svn:ignore"cache\ tmp\ null\ and_so_on" . |
此命令将忽略当前目录中名为
我在让嵌套目录被忽略时遇到问题;我想忽略的顶部目录不会显示为"svn status",但所有的子目录都显示了。这对其他人来说可能是不言而喻的,但我想我会分享它:
例子:
/trunk
/trunk/cache
/trunk/cache/subdir1
/trunk/cache/subdir2
1 2 3 4 5 | cd /trunk svn ps svn:ignore . /cache cd /trunk/cache svn ps svn:ignore . * svn ci |
bash oneliner for multiple忽略:
1 2 3 | svn propset svn:ignore".project"$' '".settings"$' '".buildpath""yourpath" |
"谢谢"SVN以一种可怕的、虚假的、难以忽略文件的方式。
所以我写了一个脚本svn忽略所有:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | #!/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。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #!/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将忽略的目录,请执行以下操作:
svn delete --keep-local path/directory_to_keep/*
svn propset svn:ignore"*" path/directory_to_keep
杰森的回答会成功的。但是,如果缓存目录不总是存在,您可能希望在父目录的svn:ignore属性中包含"cache",而不是在缓存目录上将svn:ignore设置为"."。我在许多"一次性"文件夹上执行此操作。
如果项目目录名为/project,而缓存目录名为/project/cache,则需要在/project上设置Subversion属性。属性名应为"svn:ignore",属性值应为"cache"。
有关属性的详细信息,请参阅Subversion手册中的此页。
如果您使用的是前端的SVN,比如Tortoissesvn,或者某种类型的IDE集成,那么在同一个菜单中也应该有一个ignore选项,就像commit/add操作一样。
由于您使用的是版本,所以实际上非常简单:
- 浏览已签出的副本
- 单击要忽略的目录
- 在"忽略"框中单击鼠标右键"编辑"
- 键入*.*忽略所有文件(或仅对JPG文件键入*.JPG等)
注意你后面的斜杠。我发现在我的忽略设置文件中包括
用Eclipse解决了以下问题:
首先,将文件夹与项目同步:
team -> synchronise
在下一个视图(团队视图)中,可以看到可以提交到SVN服务器的所有资源。
因此,选择要忽略的资源的资源文件夹,然后可以使用
team -> add to
svn:ignore .
然后,在确认窗口中,选择第一个选项:"按名称忽略"。
例如,如果我想忽略目标文件夹及其.class资源,我将进行同步,并在"同步"视图中选择目标文件夹。之后,我会选择
team->add
到
设置svn:ignore属性。大多数UI SVN工具都有一种方法可以做到这一点,以及链接中的命令行讨论。
在花了很多时间寻找如何做这个简单的活动后,我决定张贴一个不难找到一个像样的解释。
首先让样本结构
斯旺斯街?项目/干线/目标?项目/trunk/myfile.x
1–首先在mycase vim中配置编辑器导出svn_editor=vim
2–"svn propedit svn:ignore project/trunk/"将打开一个新文件,您可以在美国的情况下添加文件和子目录键入"target"保存并关闭文件并工作
斯旺斯街?项目/trunk/myfile.x
谢谢。