`
123003473
  • 浏览: 1059773 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

SVN实现在更新本地版本库时忽略指定目录

    博客分类:
  • SVN
 
阅读更多
很多时候,你的svn repo(假定project)很大(这里指包括所有tags和branches),但是其实你真正需要的却只有一两个(比如说trunk,以及和trunk平级的install目录,同时install目录和trunk目录有着这样活那样的联系),这时你就希望在svn co的时候是co整个project并且忽略你不想要的目录。当然,你大可不必co整个project,而单独co你想要的目录就行了。但是,从SCM的角度出发,你不可以强行改变用户的使用习惯,不排除就有这么些人喜欢这样操作,尤其是对于那些喜欢用命令行的人而言。

可能我这么说,大家没有什么概念,我给大家举个例子,大家应该就知道这是一种什么情况了:

大家都知道,在一个项目的SCM管理中,往往要求开发者通过打tag的方式来进行版本发布,tag存在于tags目录,tags目录往往与trunk/branches目录平级,这里还有一个install目录,如下:
project/   
|-- branches   
|   |-- branch1   
|   |-- branch2   
|   `-- branch3   
|-- install   
|-- tags   
|   |-- tag1   
|   |-- tag2   
|   |-- tag3   
|   |-- tag4   
|   `-- tag5   
`-- trunk   
    `-- src  

tags目录虽然是一个标签副本,但在checkout的过程中,是会针对一份完整代码的,因此很多人都不希望在本地的working copy中保留这个tags目录。遗憾的是,svn co命令并没有这样一个选项去忽略这个目录。

事实上,我也遇到了这个问题,在我看了很多help之后,终于找到了办法。具体如下(分两种情况讨论):
I. 本地保存有完整的Working Copy情况:
换句话说就是,你已经将svn中完整的repos/directories checkout到本地了(本地已经有一份你在服务器端的完整Copy了)。这时,你只需要运行以下命令将tags以及branches目录排除在svn up列表:
# svn update --set-depth=exclude tags branches
D    tags
D    branches 

选项后面可以跟多个目录,这样,就在你当前的working copy中成功的将tags和branches目录排除掉了,在你下一次的update中,就不会去理会这两个目录了,但同时有保证了你的project是在version control下的,因此不需要每次都逐个进入目录进行svn up了。

II. 进行一次全新的忽略目录Checkout操作:
这种情况如果是在windows下,就显得非常简单,你只需要使用乌龟客户端的“Choose Item”按钮。

但是如果是在命令行的情况下,那就要稍微复杂一点了,请按照如下操作:

1. 首先将目录树checkout到本地:
[root]@[Fck_with_U]:[~/temp]->>svn co http://svn_test_url.com/test_dir my_checkout --depth immediates   
A    my_checkout/backup   
A    my_checkout/doc   
A    my_checkout/scripts   
A    my_checkout/src   
A    my_checkout/data   
A    my_checkout/tool   
Checked out revision 736189

2. 将你不想co的目录排除在外(比如这里我想排除backup, data, doc, src, tool这五个目录,只想checkout scripts目录):
[root]@[Fck_with_U]:[~/temp]->>cd my_checkout/   
[root]@[Fck_with_U]:[~/temp/my_checkout]->>ls   
backup  data  doc  scripts  src  tool   
[root]@[Fck_with_U]:[~/temp/my_checkout]->>svn up --set-depth=exclude backup data doc src tool   
D         backup   
D         data   
D         doc   
D         src   
D         tool  

3. 更新你想要的scripts目录:
[root]@[Fck_with_U]:[~/temp/my_checkout]->>svn update --set-depth infinity scripts/  
A    scripts/trunk  
A    scripts/trunk/test  
........... 

【转载地址】http://scmbob.org/exclude-dirs-when-svn-up.html
分享到:
评论

相关推荐

    HG,SVN忽略文件

    不过,SVN的忽略机制略有不同,它可以通过全局忽略模式或本地忽略设置来实现。全局忽略模式可以在TortoiseSVN的设置中找到,具体路径为“设置”->“常规”->“全局忽略模式”。这里可以添加通用的忽略规则,如: - ...

    svn版本控制配置

    一旦提交成功,你的代码就已经保存在SVN服务器上,其他团队成员可以通过更新操作获取最新的代码。 至于第一种方式,即直接导入到Subversion,这种方式会将本地代码立即上传到服务器,然后删除本地代码,再从服务器...

    小乌龟svn代码管理

    - **创建版本库**:使用“Create Repository here”创建本地版本库,或者通过“Import”导入已有的项目。 - **检出(Checkout)**:通过“SVN Checkout”从版本库获取最新代码到本地。 - **提交(Commit)**:修改...

    删除SVN文件管理

    SVN允许用户设置忽略规则,这样特定的文件或文件类型就不会被添加到版本库中。这通常通过`.svnignore`文件实现,这是一个文本文件,其中包含了要忽略的文件或模式列表。如果你想要一个文件或文件夹不再受SVN管理,...

    SVN usage on Linux

    如果不指定本地存储路径,则默认会将代码检出到当前目录,并且使用版本库路径的最后一部分作为目录名。 #### 三、创建分支 创建分支是在SVN中实现并行开发的重要手段之一。在Linux下创建分支可以通过`svn cp`命令...

    svn客户端-windows版本

    这样,用户只需点击鼠标右键,就可以对文件或目录执行如“版本库检出”、“提交”、“更新”等SVN操作,极大地提高了工作效率。同时,“有签入签出功能”是指客户端支持SVN的核心特性,即“Checkout”(检出)和...

    svn插件myeclipse+svn插件

    - 在弹出的窗口中,点击“Add”按钮,输入插件的名称(例如:Subversive或Subclipse,这两个都是常见的SVN插件),然后在“Location”栏中粘贴插件的更新站点URL。如果压缩包包含离线插件文件,可以点击“Archive”...

    HG,SVN忽略

    除了全局设置,SVN还支持在项目目录中创建`.svnignore`文件,用以指定特定于项目的忽略规则。这种方式更灵活,适用于那些只有在特定项目中才需要忽略的文件或目录。 ### 总结 无论是使用HG还是SVN,忽略特定文件都...

    svn版本管理教程

    - 版本库模型: 使用集中式版本库,便于多人协作。 #### 二、SVN版本管理约定 - **目的**: 在软件开发过程中,有效地管理不同版本的代码,确保能够随时回溯到特定版本,并记录每次变更的原因。 - **版本标识**: ...

    SVN win32 中文版

    - **更新(Update)**:将版本库的最新改动同步到本地工作拷贝。 - **合并(Merge)**:整合两个或多个分支的更改。 2. **TortoiseSVN**: - TortoiseSVN是SVN的一个图形化客户端,它与Windows资源管理器集成,...

    SVN用户使用详细指南

    导出功能允许用户将版本库中的文件或目录导出到指定的位置,而不包含版本控制信息。在TortoiseSVN中,右键点击文件或文件夹,选择“TortoiseSVN”->“Export”,然后按照提示选择导出的目标位置即可。 ###### 3.3.5...

    svn中文操作手册

    - 版本库(Repository):存储所有文件和目录变更历史的中央数据库。 - 工作副本(Working Copy):开发者本地计算机上的项目副本,可以直接编辑。 - 检出(Checkout):从版本库获取最新版本的工作副本。 - ...

    Myeclipse的SVN插件,下载后直接使用

    3. **提交(Commit)**:将本地修改的文件或目录上传到版本库,保存你的工作进展。 4. **更新(Update)**:将版本库中的最新改动拉取到本地,保持与团队的同步。 5. **比较(Compare)**:可以比较不同版本之间的...

    svn 常用命令 doc

    - `svn diff`:查看文件的修改差异,可以是本地版本与仓库版本,或者两个版本之间。 12. **导出(Export)**: - `svn export <repository_url> <local_path>`:导出仓库中的文件到本地,不包含.svn元数据,适合...

    开发工具svn

    4. **更新(Update)**:为了获取其他人对版本库的最新更改,需要在本地工作副本执行更新操作。 5. **冲突(Conflict)**:如果两个或更多人同时修改了同一文件的同一部分,就会发生冲突。解决冲突通常需要手动合并...

    SVN(版本控制工具)基本操作

    TortoiseSVN会标记冲突文件,用户需手动解决冲突,可以选择接受本地版本、仓库版本,或手动合并。 10. **分支与合并(Branching & Merging)** 分支允许团队在不影响主线开发的情况下进行实验性开发。创建分支后,...

    Android Studio 配置忽略文件的方法实现

    当我们在进行上传代码到Git、SVN仓库时,通常需要先配置忽略文件,这样主要是方便上传的代码下载的时候不会与编译器和Gradle的版本发生冲突,能够保证下载的代码能正常运行。 操作步骤 打开Android Studio中的File下...

    批量删除.svn脚本

    5. **SVN Delete**:在版本库中删除文件或目录,通常需要先`svn delete`,再`svn commit`。 6. **忽略文件**:如果不想让某些文件或目录受SVN控制,可以在`.svnignore`文件中添加相应的模式。 在实际工作中,我们...

    svn工具和使用方法文档

    - **忽略(Ignore)**:对指定的文件或目录设置忽略规则,防止它们被添加到版本库。 - **删除(Delete)**:从工作副本和版本库中移除文件或目录。 - **提交(Commit)**:将更改保存到版本库,需附带提交消息...

    eclipse svn 插件

    - **搜索和替换**:在版本库中进行文本搜索和替换,查找特定的修改。 3. **使用指南**: - **配置SVN连接**:在Eclipse的首选项中设置SVN的全局配置,包括SVN客户端、服务器地址等。 - **资源标记**:资源(文件...

Global site tag (gtag.js) - Google Analytics