配置管理工具SVN使用规范西安四海为家房车有限公司文档修订记录目录1.引言 (4)1.1Subversion的介绍 (4)1.2Subversion的特性 (4)1.3SVN链接模式 (5)1.4SVN操作流程 (5)2.SVN使用 (6)2.1SVN软件安装 (6)2.2SVN库介绍 (6)2.3基本操作 (7)2.3.1系统登录 (7)2.3.2设置功能(Settings) (8)2.4系统规范使用 (12)2.4.1迁出配置库内容(SVN Checkout) (12)2.4.2更新文件(SVN Update) (14)2.4.3提交更新(SVN Commit) (15)2.4.4增加文件(Add) (17)2.4.5检查更新(Check for modifications) (17)2.4.6删除文件(Delete) (18)2.4.7撤销更改(Revert) (18)2.4.8锁定和解锁(Get lock and Release lock) (18)2.4.9重命名文件(Rename) (18)2.4.10获取历史文件(Show log) (19)2.4.11版本控制 (20)2.4.12与目录无关内容 (21)2.4.13文件夹目录名称规范 (21)2.4.14文件上传格式 (22)2.4.15文件、数据放置 (22)2.5日常使用问题 (22)2.5.1版本库无响应 (22)2.5.2邮件中的路径链接 (22)2.5.3系统库最上层打不开 (23)2.5.4提交失败(Commit fail) (23)2.5.5SVN文件夹无法下载 (24)2.5.6特征图标的显示 (24)2.5.7冲突问题解决 (25)2.5.8提交时出现的磁盘空间不足问题 (26)2.5.9IE浏览器与版本库浏览器的差异 (26)附录1:SVN特殊权限申请表 (27)附录2:SVN功能解析 (28)1.引言1.1Subversion的介绍SVN是Subversion的缩写。
Subversion管理随时改动的文件和目录,以二进制格式存储所有的文件,使用高效的比较二进制差异算法来计算版本之间的改动。
同时,它是一个时间机器,随时记录文件和目录的每次改动,例如:文件的增加、删除、重新排列文件等。
同时SVN允许你恢复以前旧版本的数据,或者检查数据变化的历史。
SVN使用类似数据库事物的方式来处理用户提交入库的过程,整个改动要么成功的被提交,要么被中断并回滚。
在数据提交完之前,其他人是看不到用户提交的修改文件,你看到的要么是改动之前的状态,要么是改动之后的状态。
这样的行为被称为“原子提交”。
原子提交很有用,因为它能保证所有相关人员看到的总是相同的东西。
原子提交过程的其中一步就是包括把你的所有改动打包为一个“修订集”(有时被称为改动集),并且再给个改动标记的修订号(绿色勾变为红色叹号)。
1.2Subversion的特性1.2.1 版本化的目录Subversion实现了一个可以跟踪目录树更改的“虚拟”版本化文件系统,文件和目录都是有版本的。
1.2.2 真实的版本历史通过Subversion你可以对文件或是目录进行增加、拷贝和改名操作,也可以新增一个具有干净历史的文件。
可以毫不夸张的将每一个版本都可以作为一个记忆片段定点。
1.2.3 原子提交版本库采用二进制差异形式提交修改的数据内容,一系列的改动,要么全部提交到版本库,要么一个也不提交,这样可以让用户构建一个需要提交修改的逻辑块,放置部分修改提交到版本库。
1.2.4 一致的数据操作Subversion 表示文件是建立在二进制文件区别算法基础上的,对于文本(可读)和二进制(不可读)文件具备一致的草所方式,两种类型的文件都压缩存放在版本库中。
1.3 SVN 链接模式其中本地工作副本与SVN 系统链接的媒介是“.svn ”隐藏文件夹,.svn 隐藏文件夹中包含了系统链接、版本等信息,下图为本地工作副本与SVN 系统链接后状态,绿色勾代表文件受系统控制(后面简称:受控)标志,红色叹号为受控文件改动标志。
链接状态1.4 SVN 操作流程操作流程图 上图中总体概括了SVN 整个操作过程:首先用户从版本库通过网络“检出”到本地工作副本中,然后,在本地工作副本中进行增加、修改、删除文件后“提交”到版本库中,如果本地工版本库 本地工作副本作副本中版本较系统版本过时,用户使用“更新”功能与系统上版本保持一致。
2.SVN使用2.1SVN软件安装下载地址:https:///downloads.zh.html;安装完不要忘记重启电脑安装完成后,按下鼠标右键,会看到如下界面:如果显示是这样的,就说明安装成功了。
2.2SVN库介绍2.2.1SVN库SVN库,分别是:开发库和运营库。
其中开发库和运营库为同一帐号密码。
各库的登录路径如下:⏹开发库:研发部工作平台。
登录路径:svn://192.168.31.190/项目;⏹运营库(project):运营部工作平台。
登录路径:svn://192.168.31.190/运营项目2.2.2帐号注册、权限申请1. 用户帐号注册:新进员工没有SVN帐号,通过邮件联系SVN管理员,邮件正文注明申请SVN普通帐号,管理员处理完帐号注册事宜后,会邮件回复。
注:普通帐号,只对公共区域目录有读取权限。
2. 权限的申请:凡是涉及到研发部层面的权限申请或者是涉及到非本部门的权限申请,一律填写如附件《特殊权限申请单》,在各方领导审核审批后,交由SVN管理员处理,在管理员处理完毕后回复用户。
2.3基本操作2.3.1系统登录点击鼠标右键出现功能选项,选择“TortoiseSVN”中的“版本库浏览器”,这时系统弹出URL界面,用户在URL中输入需要进入的库路径,弹出登录认证框,用户输入用户名和密码进入系统主界面。
图(a) 系统登录图(b) 认证界面图(c) public库系统界面图(a)和图(b)是系统登录操作界面,图(c)是系统的主界面,三副图中整体描述了SVN 系统的登录情况。
注:图(b)中“Save authentication”是保存认证选项,用户根据需要对自己的用户名和密码进行保存,以便在下次操作时不需要再次输入用户名和密码了。
2.3.2设置功能(Settings)在上节类容中主要讲述了系统的登录方式和认证保存的方法,接下来继续讲述系统“设置(Setting)”功能的使用。
在设置中,用户可以根据需要选择系统的语言显示、清除已保存的数据、显示特征标志等等。
(1)系统语言显示选择系统语言中-英文转换系统安装后全部默认为英文模式,这时需要用户手动切换到中文模式。
上图中描述了中英文切换的过程,在选择“设置(Setting)”功能后弹出的对话框自动显示语言栏(Language),用户选择“中文(简体)”后确认即可。
(2)忽略上传文件SVN系统有一个似过滤器的功能,在本地工作副本中用户可以根据需要过滤一些不需要上传到服务器的文件,这个功能就是“全局忽略样式”。
全局忽略样式忽略样式对提交文件扩展名进行选择性忽略,忽略格式通常以*.X形式被系统识别,例如:用户不需要将编译产生的.o和.err文件提交到SVN上,这时用户在全局忽略样式中输入*.o *.err如上,各条目之间以空格分隔。
注意:当用户在本地工作副本中对新添加文件采用了系统添加功能操作,忽略样式功能对本地副本中的文件将不起作用,如下表蓝色加号表示文件已添加;另外还有一种情况,如果已经将想忽略的文件提交到了SVN系统上,是无法进行忽略的。
添加文件样式(3)保存清除在对系统保存认证后相应需要对认证进行清除,清除功能仍然在设置模块中,界面如下图。
在保存清除中共可以对本地四种已保存数据进行清除,分别有URL历史记录、日志信息、窗口大小、认证数据,在对这些数据完全清理后系统自动恢复到“零”状态。
因此,用户在离机后也别忘记将保存认证数据清除掉,以保障资料的安全性。
认证清除密码清除(4)特征标志选择不少用户在使用SVN“检出”功能后,本地工作副本没有出现特征符号——绿色勾或其他特征符号,这是由于系统无法识别默认的状态缓存,需要人工手推选择状态缓存方式,改变状态缓存方法如下图,在设置中选择“外观与样式”的“图标叠加”模块,再在“状态缓存”中选择“Windows外壳”。
特征显示设置中其他不常用的功能不再进行一一介绍,用户可以根据日常操作实践来理解。
2.4系统规范使用项目开发要求:1、工作目录要及时更新,不要和SVN服务器有太大的差别2、提交代码时,如果出现冲突,必须仔细分析解决,不可以强行提交3、提交代码之前先在本地进行测试,确保项目能编译通过,且能够正常运行,不可盲目提交4、必须保证SVN上的版本是正确的,项目有错误时,不要进行提交2.4.1迁出配置库内容(SVN Checkout)1.新建或进入目录下(比如E盘),右键→SVN Checkout2.URL of repository 填写仓库路径即可3.Revision处,“HEAD revision”是指最新版,也可以指定Revision为任意一个版本。
4.点击“OK”按钮后,在弹出的对话框中输入用户名和密码,验证成功后,项目文件开始从远程服务器下载到本地工作目录中:5.点击“确定”按钮后,即可获取完成,出现如下下载界面:6.下载完成后,服务器上所有内容会出现在本地文件夹下2.4.2更新文件(SVN Update)1.当从配置库迁出相应目录后,他人对服务器上此目录内容进行了修改,则需要再次获取改动内容到本地目录的过程称为更新。
更新可以针对一个文件、几个选中的文件或者整个文件目录。
选中要被更新的文件,右键选择“SVN Update”项,如下:2.2)点击“SVN Update”后会弹出窗口显示更新的进度,如下:若上述框中的有文件出现亮红,说明来自配置库的内容与你本地修改内容合并时出现了冲突2.4.3提交更新(SVN Commit)1.本地文件修改后,若是需要更新到服务器上,则需要提交(Commit)最新的更新。
Commit的作用是将本地最新修改的文件同步到SVN服务端,供其他人来参考或者使用,当然使用之前,要先Update一下,来确保是最新的,在修改文件上击右键,出现菜单,选择“SVN Commit…”,如下:2.然后填写关于本次更新的日志(log message),这是必填项,否则commit会失败,如下:提交代码需注意如下规范:●先更新,再提交SVN更新的原则是要随时更新,随时提交。
当完成了一个小功能,能够通过编译并且自己测试之后,谨慎地提交。
如果在修改的期间别人也更改了svn的对应文件,那么commit就可能会失败。
如果别人和自己更改的是同一个文件,那么update时会自动进行合并,如果修改的是同一行,那么合并时会产生冲突,这种情况就需要同之前的开发人员联系,两个人一起协商解决冲突,解决冲突之后,需要两人一起测试保证解决冲突之后,程序不会影响其他功能。