我刚开始使用SVN,我有一个在源代码管理下不需要的缓存目录.如何忽略SVN的整个目录/文件夹?
我在OS X和命令行上使用Versions和TextMate.
设置svn:ignore
父目录的属性:
svn propset svn:ignore dirname .
如果您有多个要忽略的内容,请按属性值中的换行符分隔.在这种情况下,使用外部编辑器编辑属性值更容易:
svn propedit svn:ignore .
这是一个示例目录结构:
\project \source \cache \other
在project
您看到您的缓存目录未添加并显示为这样.
> svn st M source ? cache
要设置ignore属性,请执行
svn propset svn:忽略缓存.
svn:ignore
您要设置的属性的名称在哪里,是属性cache
的值,并且.
是您要设置此属性的目录.它应该是cache
需要该属性的目录的父目录.
要检查设置了哪些属性:
> svn proplist Properties on '.': svn:ignore
要查看以下内容的价值svn:ignore
:
> svn propget svn:ignore cache
要删除先前设置的属性:
svn propdel svn:ignore
重要提一下:
在命令行上你不能使用
svn add *
这也将添加被忽略的文件,因为命令行扩展*
,因此svn add
认为您希望添加所有文件.因此请改用:
svn add --force .
由于我花了一段时间试图让它工作,应该注意的是,如果文件已经存在于SVN中,则需要svn delete
它们,然后编辑svn:ignore
属性.
我知道这似乎很明显,但是当我认为它会在本地忽略它们时,它们会一直显示?
在我的svn status
列表中.
要略微扩展,如果您使用svn命令行工具执行此操作,则需要键入:
svn propedit svn:ignore path/to/dir
这将打开您选择的文本编辑器,然后键入'*'忽略其中的所有内容,并保存+退出 - 这将包括svn中的目录本身,但忽略其中的所有文件,忽略该目录,使用父路径,然后键入文件中的目录名称.保存后,运行更新('svn up'),然后检查相应的路径.
svn:ignore
在父目录上设置属性:
$ cd parentdir $ svn ps svn:ignore . 'cachedir'
这将覆盖任何当前值svn:ignore
.您可以使用以下命令编辑值:
$ svn pe svn:ignore .
哪个会打开你的编辑器.您可以添加多个模式,每行一个.
您可以使用以下方法查看当前值:
$ svn pg svn:ignore .
如果您使用的是GUI,则应该有一个菜单选项来执行此操作.
感谢上面的所有贡献.我想在忽略文件的同时从我的经验中分享一些额外的信息.
当文件夹已经在版本控制下
在svn导入和svn co文件后,我们通常第一次做什么.
所有运行时缓存,附件文件夹都将受版本控制.所以,在svn ps svn:ignore之前,我们需要从存储库中删除它.
我们可以使用上面的SVN 1.5版svn del --keep-local your_folder
,但对于早期版本,我的解决方案是:
svn导出文件夹的干净副本(没有.svn
隐藏文件夹)
svn del the local和repository,
svn ci
复制文件夹
做SVN ST和确认文件夹被标记为"?"
现在我们可以根据解决方案做svn ps
当我们需要忽略多个文件夹时
在一个目录中,我有两个需要设置为的文件夹 svn:ignore
如果我们设置一个,另一个将被删除.
然后我们想知道我们需要svn pe
svn pe
将需要编辑文本文件,如果需要使用vi设置文本编辑器,则可以使用此命令:
export SVN_EDITOR=vi
使用"o",您可以打开一个新行
键入要忽略的所有文件夹名称
点击'esc'键退出编辑模式
输入":wq"然后点击Enter保存并退出
该文件看起来像这样:
runtime cache attachments assets
如果您的目录foo
已经受版本控制,请先删除它:
svn rm --keep-local foo
svn propset svn:ignore foo .
如果您使用特定的SVN客户端TortoiseSVN,那么在提交时,您可以选择右键单击项目并选择"添加到忽略列表".
...如果你想忽略多个目录(例如build/
temp/
和*.tmp
文件),你可以分两步完成(忽略第一个和编辑忽略属性(参见其他答案)或者可以写一些像
svn propset svn:ignore "build temp *.tmp" .
在命令行上.
忽略多个条目的命令有点棘手,需要反斜杠.
svn propset svn:ignore "cache\ tmp\ null\ and_so_on" .
此命令会忽略任何名字cache
,tmp
,null
,和and_so_on
在当前目录.
我有问题让嵌套目录被忽略; 我想忽略的顶级目录不会显示'svn status'但所有子目录都显示.这对其他人来说可能是不言而喻的,但我想我会分享它:
例:
/树干
/主干/缓存
/主干/缓存/ subdir1
/主干/缓存/ subdir2
cd /trunk svn ps svn:ignore . /cache cd /trunk/cache svn ps svn:ignore . * svn ci