前言,先扯几句。最近学了GIT,虽然很肤浅,但是也算是用上了分布式版本管理控制系统。Linus很牛,他也很厌烦SVN,而我看这些都是工具,是否拿来使用主要看是否顺手。我赞同分布式版本管理控制,它有诸多优点,但是对于在局域网中做项目的封闭式开发或者项目很小且本机就能搭建SVN服务器,这两种情况来使用SVN也无可厚非。至于神人Linus他做的Linux系统源码太庞大,而且项目源码数据量大,这个对于SVN还是不太适用。准备进入公司新项目开发阶段了,有同事在外地分公司工作,因此代码版本管理尤为重要。之前有个项目居然是手工拷贝合并代码,还好只有3个人,即使这样也有不一致的地方,现在想起来真是汗一个。这次首先跟同事询问代码如何管理,同事说把源码放在公司服务器上,用SVN同步,因为外地的同事编码量不会太多,而我们在公司的同事可以直接通过公司局域网访问服务器,因此用SVN还是没问题。SVN的基本使用我都会了,这里只是想学习两点:1、SVN设置忽略文件;2、SVN给文件设置只读属性(该文件必须先获取锁,锁定后才能编辑,编辑好以后提交解锁)。

首先,先说如何设置忽略文件。这里先说一下为什么要设置忽略文件,因为Visual Studio编辑器在编译生成项目时会有一些无关代码的文件,比如bin文件夹、obj文件夹,还有一些用户配置文件,比如*.user、*.suo等。这类文件是不用提交同步到服务器,而是个人用个人的。对于已维护在SVN上的项目,在客户端对于某个文件右击在SVN子菜单中找到【删除和增加到忽略列表】菜单,点击它这个文件就被忽略了,需要提交一下,忽略的文件在服务器上是被删除的,但是在每个人本机上是存在的,且不受SVN版本控制。如果我想在导入本地项目文件到服务器上或者批量添加文件时,如何忽略指定类型的文件呢?这个要点击SVN右键菜单中的设置菜单,在弹出来的对话框中,常规设置中有个全局忽略样式,这里面已经有一些东西了,我们不管它。我们把我们要忽略的东西添加进去,注意文件夹直接写,文件可以使用通配符*和?(并且还支持正则表达式),多个项之间用空格隔开。比如我添加如下4项:[Bb]in [Oo]bj *.user *.suo。这样在导入操作时符合忽略规则的文件夹或文件不会导入到服务器的SVN仓库中。

然后,再来说给文件设置只读属性,为什么要设置只读属性呢?其实SVN有合并的功能,但是是对文本文件,比如txt、cs、xml、aspx等。但是对于二进制或者其他一些重要文件,合并的效果就不太好了,这时如果多人同时编辑同一文件,很容易出现冲突。而只读属性并不是真的只读,其实据说有办法可以绕开这个设置,不过这个咱们先不关心。它只是提醒我们该文件要先锁定再编辑,在提交解锁前,其他人是无法获取锁的,因此也就无法提交,他的编辑只能在本地保存副本了,这样我们就不会对于重要的需要防范冲突的文件忘记锁定了。对于已维护在SVN上的项目,在客户端对于某个文件右击在SVN子菜单中找到【属性...】,然后再点击【新建】按钮,键选择“svn:needs-lock”,值随便填,这里我就填*,提交到服务器上后,这个文件以后就必须锁定后才能编辑了。那么如果想对某个文件夹下所有的文件都设置该属性,就右击该文件夹,然后还是像前面一样操作,这时在填写键值的窗口上有个复选框会启用——递归应用该属性,勾选它,这个文件夹中的所有文件都会应用这个属性,然后提交即可,那么对于后添加或后导入的文件如何自动加上该属性呢?还要进入到之前设置全局忽略样式的窗口,它下面有个Subversion配置文件,点击【编辑】按钮,会用记事本打开一个文件,里面有这么一段:

### Set enable-auto-props to 'yes' to enable automatic properties
### for 'svn add' and 'svn import', it defaults to 'no'.
### Automatic properties are defined in the section 'auto-props'.
# enable-auto-props = yes

大概意思就是:将“启用自动属性”设置为是来启用自动属性功能,启用后对于SVN的Add和Import(添加和导入)会自动应用这些属性,“启用自动属性”默认值为否,自动属性可以在“auto-props”配置节中定义。然后将第4行的最前面的#和空格去掉即可,该文档下方有一个[auto-props],它下面已经有若干的自动属性定义了,只不过被注释掉了(行首加#即为该行已被注释),那些被注释的自动属性我们不管,我们配置我们的属性,比如*.sln = svn:needs-lock=*,换一行再写*.csproj = svn:needs-lock=*等等。

最后再扯一句啊,SVN服务器上有个权限,是对SVN用户做的控制,里面有只读、读写等权限,如果你在服务器的仓库中对某个文件设置成只读权限,那么对应用户是可以将该文件拉到本地,但是修改后提交,SVN客户端会提示无法提交(红色字体)。这个跟之前说的设置只读属性不是一回事。

SVN的忽略和只读使用方法学习记录的更多相关文章

  1. java方法学习记录

    ---恢复内容开始--- 方法重载:两个方法有相同的名字,但参数不同,就是方法重载,且不能仅仅依据修饰符或者返回类型的不同来重载方法. 命令行参数的使用 有时候你希望运行一个程序时候再传递给它消息.这 ...

  2. js千分位分隔,数字货币化方法学习记录

    js千分位分隔,数字货币化-4种方法(含正则) 方法1-整数货币化 // 整数货币化 function intCurrency(num) { var reg = new RegExp("^[ ...

  3. 设置SVN,Git忽略MAC的.DS_Store文件的方法

    设置SVN,Git忽略MAC的.DS_Store文件的方法 I. 显示Mac隐藏文件的命令: defaults write com.apple.finder AppleShowAllFiles -bo ...

  4. SVN设置忽略文件列表以及丢失了预定增加的文件解决方法

    设置svn忽略列表 Linux下svn命令行配置 1. 修改版本库的相关属性 2. svn 客户端的配置 Windows下 Tortoise SVN 设置 1. Tortoise SVN 上修改版本库 ...

  5. eclipse svn不能忽略文件及文件夹,ignore设置无效 ?

    https://blog.csdn.net/zengmingen/article/details/79025445 https://blog.csdn.net/zengmingen/article/d ...

  6. SVN冲突出现原因及解决方法浅谈

    缘由 很简单,用svn合base,出现了各种各样奇怪的问题,虽然最终没有造成什么大的线上问题,但过程也是曲折的,耗费个人精力,也占用他人资源,不好不好,一点都不佛系. 究其原因,还是对为什么出现各种冲 ...

  7. eclipse svn提交忽略文件及文件夹,ignore设置无效..

    如果之前提交过此文件,就不能设置忽略该文件了.所以第一次提交的时候要搞清楚再提交. [亲测,的确如此,用 Windows -> Preferences -> Team -> Igno ...

  8. Spring学习记录(九)---通过工厂方法配置bean

    1. 使用静态工厂方法创建Bean,用到一个工厂类 例子:一个Car类,有brand和price属性. package com.guigu.spring.factory; public class C ...

  9. Android studio 开发中 用git实现批量忽略特定文件的方法

    git实现批量忽略特定文件的方法 在用AndroidStudio开发项目的时候,3个人协同开发,那么用Git同步代码,会将模块中的大量iml文件同步,每次都会提交和更新,一个一个的去忽略他们,显然是最 ...

随机推荐

  1. 2016年11月17日--SQL主、外键,子查询

    主键 数据库主键是指表中一个列或列的组合,其值能唯一地标识表中的每一行.这样的一列或多列称为表的主键,通过它可强制表的实体完整性.当创建或更改表时可通过定义 PRIMARY KEY约束来创建主键.一个 ...

  2. HDU 2853 最大匹配&KM模板

    http://acm.hdu.edu.cn/showproblem.php?pid=2853 这道题初看了没有思路,一直想的用网络流如何解决 参考了潘大神牌题解才懂的 最大匹配问题KM 还需要一些技巧 ...

  3. Python自动化之sqlalchemy(修改和查询)

    修改 my_user = Session.query(User).filter_by(name="alex").first() my_user.name = "Alex ...

  4. [转]ubuntu 14.04 如何开启和关闭触控板

    转自:http://lxn348567248.blog.163.com/blog/static/1201759252014649443513/ 禁用触摸板的命令:  sudo rmmod psmous ...

  5. iOS学习笔记(2)--Xcode6.1创建仅xib文件无storyboard的hello world应用

    http://www.mamicode.com/info-detail-514151.html 由于Xcode6之后,默认创建storyboard而非xib文件,而作为初学,了解xib的加载原理很重要 ...

  6. Java语言中几个常用的包

    Java采用包结构来组织和管理类和接口文件.本文介绍Java语言类库中几个常用的包,因为这几个包在软件开发与应用中经常需要用到,其中有些包是必要的.若是离开它,还真不能做事情了. 第一个包:java. ...

  7. ASP.NET 上的 Async/Await 简介

    原文链接 大多数有关 async/await 的在线资源假定您正在开发客户端应用程序,但在服务器上有 async 的位置吗?可以非常肯定地回答“有”.本文是对 ASP.NET 上异步请求的概念性概述, ...

  8. document.documentElement.scrollTop || document.body.scrollTop

    如果有doctype的声明,需要用document.documentElement.scrollTop没有doctype的声明,用document.body.scrollTop

  9. ffmpeg-20160701-git-bin.7z

    ESC 退出 0 进度条开关 1 屏幕原始大小 2 屏幕1/2大小 3 屏幕1/3大小 4 屏幕1/4大小 S 下一帧 [ -2秒 ] +2秒 ; -1秒 ' +1秒 下一个帧 -> -5秒 f ...

  10. CentOS新系统必做的几件事

    一.修改yum源 要知道国外的yum源是很慢的,为了提高效率,更变为网易yum源. 首先备份/etc/yum.repos.d/CentOS-Base.repo(系统默认源): mv /etc/yum. ...