我如何忽略SVN的目录?



Answers

这是一个示例目录结构:

\project
    \source
    \cache
    \other

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

> svn st
M  source
?  cache

要设置忽略属性,请执行

svn propset svn:忽略缓存。

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

要检查设置了哪些属性:

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

要查看svn:ignore的值svn:ignore

> svn propget svn:ignore
cache

删除以前设置的属性:

svn propdel svn:ignore
Question

我刚开始使用SVN,我有一个缓存目录,我不需要在源代码控制下。 我如何忽略SVN的整个目录/文件夹?

我在OS X和命令行上使用VersionsTextMate




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

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




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

例:

/树干

/主干/缓存

/主干/缓存/ subdir1

/主干/缓存/ subdir2

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



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

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




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




既然你使用的是版本,那其实很简单:

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



Eclipse解决下一个问题:

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

团队 - >同步

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

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

团队 - >添加到svn:ignore

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

例如,如果我想忽略目标文件夹及其.class资源,我会同步,并在同步视图中选择目标文件夹。 之后,我会选择

team->添加

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




先删除它...

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

svn rm --keep-local foo

...然后忽略:

svn propset svn:ignore foo .



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




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




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

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

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

$ svn pe svn:ignore .

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

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

$ svn pg svn:ignore .

如果您使用GUI,应该有一个菜单选项来执行此操作。




Related