`

SVN忽略整个目录

阅读更多

用svn管理代码,一直以来都受到一件不爽事情的困扰:

1)有些文件或文件夹不想在commit的时候看到,虽然他们是non-versioned,比如*.bak.*.class,*.scc(vss文件),目录比如bin/, classes/,还有一些是eclipse之类开发工具生成的文件

2)当错误的将以上那些不想看到的文件加入svn后,该怎么忽略它们

 

google了一下svn ignore,看到了些方法:

 

转自http://www.svn8.com/SVNSY/20090405/4410.html 写道
若想创建了一个文件夹,并且把它加入版本控制,但忽略文件夹中的所有文件的内容:

$ svn mkdir spool
$ svn propset svn:ignore '*' spool
$ svn ci -m 'Adding "spool" and ignoring its contents.'

若想创建一个文件夹,但不加入版本控制,即忽略这个文件夹:

$ mkdir spool
$ svn propset svn:ignore 'spool' .
$ svn ci -m 'Ignoring a directory called "spool".'

若已经创建了文件夹,并加入了版本控制,现在想忽略这个文件夹,但要保持文件夹的内容:

$ svn export spool spool-tmp
$ svn rm spool
$ svn ci -m 'Removing inadvertently added directory "spool".'
$ mv spool-tmp spool
$ svn propset svn:ignore 'spool' .
$ svn ci -m 'Ignoring a directory called "spool".'

 

我看了网上关于svn:ignore的介绍, 说对于没有加入版本控制的,可以直接设定成ignore,但不能对加入版本控制的文件和目录这么做。解决办法是,先删除再ignore, 上面的命令其实也是这个方式,只不过有导出再mv的过程。

命令行方式固然好,但我用的是tortoisesvn,界面操作更加人性化和easy。tortoisesvn下页可以类似的这么做:

1)找到这些文件,直接右键,add to ignore list, 之后可以选择by name,by extention, 选择by extention就能忽略同类文件了。

2)直接在命令模式del /s *.bak ,先把*.bak在本地工作目录删除掉,然后再commit;看需要,再将*.bak 加入ignore

 

 

There may be times when you want to keep certain files out of Subversion. Examples of these include local configuration files and temporary files like those created by vim. Fortunately, Subversion has an option to specify exclusions, via svn:ignore. To do this, run the following in a terminal

svn propedit svn:ignore <parent directory of the files/directories to ignore>

This will open up a text editor where you can specify what to ignore, one file/directory per line. Remember that these are all relative to the parent directory you specified. Two things to note:

  • The command is svn propedit and not svn propset in a normal use case. The latter command is for migrating CVS ignore files, and will produce a Explicit target required error if you attempt to run it on a directory.
  • This only works for items not yet in the repository. If the file or directory was previously placed in Subversion, specifying it in the ignore file won’t have any effect.

Check out the chapter on ignoring unversioned items of the online Subversion book for more information, such as what file pattern syntax you can use in the ignore file.

 

 

 

 

看了上面两篇转载的文章,加上自己的实践总结如下:

 

Request:

我有一个工程,工程名为simple,采用maven进行依赖管理,在check in时我不想工程下maven产生的target目录被提交到SVN(包括目录下所有文件和目录本身)。

 

Solution:

1) 要被忽略的目录必须是未版本化的目录,如果已被版本化,设置svn:ignore不起作用(除非在本地删除提交后再设置或直接svn del url后再设置)。

2) 要被忽略的目录的父目录必须是已版本化的目录。

3) 命令:

      a) svn pe svn:ignore simple

      回车后在打开的文本编辑器里输入pattern:target

      b) svn ps svn:ignore "target" simple

      此命令直接在“”中加上pattern,不会打开文本编辑器。

      命令的参数应该是要被忽略的目录的父目录,pattern里面写要被忽略的目录,这点我弄了很久才搞明白。

      上面老外的文章里写的“The command is svn propedit and not svn propset in a normal use case. The latter command is for migrating CVS ignore files, and will produce a Explicit target required error if you attempt to run it on a directory”并不正确,svn ps可以用,但是是采用 b) 形式的命令。 svn pe和svn ps都可以设置svn:ignore属性,只是usage不同而已: svn pe svn:ignore parent_dir  VS svn ps svn:ignore "pattern" parent_dir.  如果两个命令的pattern相同,他们的效果是一样的。若有多个pattern,使用svn pe,一行写一个pattern

 

 

Update:

svn ps 也可以设置多个pattern:

svn ps svn:ignore "pattern1 \

pattern 2"

需要在不同pattern之间用回车隔开, 不可以是空格.用"\"分隔不同行

或者写在文件里, 然后从文件导入

svn ps svn:ignore -F svnignore dir

如果要递归设置所有目录:

svn ps -R svn:ignore -F svnignore parent_dir

如果只想设置一个maven项目下各moudle项目的根目录可以结合find命令:

find . -type d -maxdepth 1 -exec bash -c "svn ps svn:ignore -F svnignore {}" \;

分享到:
评论

相关推荐

    HG,SVN忽略

    因此,学会如何让HG和SVN忽略特定文件或目录变得至关重要。 ### HG忽略特定文件 在HG中,可以使用`.hgignore`文件来定义要忽略的文件模式。这个文件应该放在项目的根目录下,其语法遵循glob模式。例如,在给定的...

    myeclispe部署时去除.svn目录及删除所有.svn文件夹

    4. **解决方案**:一种常见的方法是在构建或部署脚本中添加命令来删除或忽略`.svn`目录。对于Windows用户,可以通过批处理文件或者注册表脚本(如提供的`kill-svn-folders.reg`)来实现。注册表脚本可能包含命令行...

    SVN usage on Linux

    使用`svn add`命令向SVN仓库添加新的文件或目录: ```bash svn add 文件或目录 ``` 例如,向仓库添加`main.c`文件: ```bash svn add main.c ``` ##### 删除文件或目录 使用`svn delete`命令删除文件或目录: ...

    SVN 代码比较工具

    SVN(Subversion)是一种广泛使用的版本控制系统,用于管理和跟踪文件和目录的变更。在开发过程中,经常需要对比不同版本的代码,这时就需要借助代码比较工具。"SVN 代码比较工具"指的是能够与SVN集成,帮助开发者...

    6、eclipse svn不显示忽略上传的文件1

    例如,`WebContent/WEB-INF/classes`表示忽略整个`classes`目录,而`*.class`则表示忽略所有`.class`文件。 2. **TortoiseSVN客户端设置**: - TortoiseSVN是一个Windows下的图形化SVN客户端,同样支持设置忽略...

    svn版本控制配置

    接着,通过浏览本地安装的SVN目录,选择`\svn.exe`,通常位于安装目录的bin文件夹内。此外,保持“Use system default Subversion configuration directory”选项默认勾选,这样Android Studio将使用系统默认的SVN...

    SVN使用说明.doc

    如果服务器允许,用户可以查看整个 SVN 数据库的目录结构。TortoiseSVN 的登陆信息通常在执行 SVN 命令时弹出,如果已保存登录记录,将不会显示登陆框。 3. **基本操作** - **检出(Checkout)**:在本地创建一个...

    取消文件和SVN关联的超实用工具和实用说明

    - 对于整个目录,可以使用`svn rm --keep-local 目录名`,同样,目录及其内容会在版本库中被删除,但不会从磁盘中删除。 2. 使用SVN图形界面客户端: 大多数SVN客户端,如TortoiseSVN,都有直观的界面操作。右键...

    svn使用入门,可以方便的告诉整个svn的架构

    2. 隐藏属性(Properties):可设置文件或目录的元数据,如忽略模式、编译指令等。 3. 过滤(Cherry-picking):选择性地合并某些提交到另一个分支。 4. 回滚(Revert):撤销本地更改,恢复到上次提交的状态。 5. ...

    svn 常用命令 doc

    - `svn import &lt;local_path&gt; &lt;repository_url&gt; -m "导入信息"`:将整个本地目录一次性导入到仓库。 14. **查看日志(Log)**: - `svn log &lt;path&gt;`:显示文件或目录的历史提交记录。 15. **查找修订版本...

    SVN用户使用详细指南

    - **版本化目录**:SVN支持对目录及其内容进行版本化管理,这意味着不仅可以追踪单个文件的变化,还能监控整个目录结构的演变。 - **真实的历史记录**:SVN能够记录文件或目录的所有历史操作,包括但不限于复制、...

    svn版本管理教程

    - **建议**: 只从仓库中获取所需的目录,如仅获取`trunk`或特定的分支目录,避免下载整个仓库。 - **好处**: - 减少本地占用空间。 - 加快代码同步速度。 #### 六、合作开发方法 - **基本流程**: 1. 开发者各自...

    ecplise SVN1.8插件

    6. **日志查看**:用户可以查看文件或整个项目的版本历史,了解每次提交的详细信息,包括作者、时间戳和提交消息。 7. **忽略文件**:可以设置某些文件或文件夹不被版本控制,避免不必要的版本记录。 8. **外部...

    AnkhSvn-2.5

    总之,AnkhSvn是Visual Studio开发团队的得力助手,通过将Subversion的功能融入开发环境,它提供了高效、便捷的版本控制体验,有助于提升整个团队的协作效率。无论是小型项目还是大型企业级开发,AnkhSvn都是一个...

    AnkhSvn2.3安装包

    2. **版本控制**:提交、更新、回退文件或整个项目,查看历史记录,以及解决冲突。 3. **比较与合并**:对比不同版本之间的差异,合并更改,并支持二进制文件的比较。 4. **分支与标记**:创建、切换、删除分支和...

    eclipse或myeclipse的svn插件

    6. **忽略文件**:对于不想纳入版本控制的文件,可以在项目属性中设置为忽略。 通过以上步骤,你就可以在Eclipse或MyEclipse中充分利用SVN插件进行版本控制,提高团队协作效率,保障代码的安全性和稳定性。记得定期...

    SVN1.4.5客户端

    9. **文件属性**:TortoiseSVN允许用户设置文件和目录的属性,如忽略某些文件或设置特定的提交注释模板。 10. **日志和差异**:用户可以查看文件的历史记录,包括每次提交的注释和变更的详细差异。 11. **锁定...

    SVN解决冲突(合并别人的修改)

    SVN(Subversion)是一个广泛使用的版本控制系统,它帮助开发者管理和维护不同版本的文件和代码库。在多人协同开发的项目中,版本控制显得尤为重要,但同时也可能会出现代码合并冲突的情况。当两个开发者对同一文件...

    SVN客户端64位(含汉化包)

    配套的安装教程通常会指导用户完成整个安装过程,包括如何配置SVN客户端,设置服务器地址,以及如何进行基本的版本控制操作。遵循教程,新手也能快速上手。 5. SVN客户端的基本操作: - **添加**:将项目文件或...

    svn 中文手册

    2. 忽略(Ignore):使用`svn propset`命令设置svn:ignore属性,可以忽略某些文件或目录,防止它们被版本控制。 3. 查看差异(Diff):`svn diff`命令用于查看文件或目录的差异,可以是本地与版本库的差异,也可以...

Global site tag (gtag.js) - Google Analytics