文档规则

[本地工作区] :work copy ,本地工作副本;

[主项目]:引用共用模块的新项目(工程)

最新版本(HEAD revision):版本库里文件或目录的最新版本

SA :SVN服务器的管理员

PRA :单个项目库的管理员,或者是项目负责人

User :普通工作人员

WC :work copy ,本地工作副本

1. 版本控制原则

SVN(或者其他版本控制软件)只是一个版本控制的辅助工具,不可能把所有的问题都自动解决掉。尤其,对于冲突这个麻烦事儿,项目成员在项目进程中要尽量通过优化流程来解决,而不是将希望寄托于软件工具来自动解决一切问题。

建议的开发过程组织:

1. 随行就市

项目刚开始阶段,单独开发;项目稳定阶段,完整开发。项目开发初期,各个项目成员负责自己的文件夹(或者模块),与SVN服务器间的更新、提交等操作只需要针对自己负责的文件夹(或者模块)就行了,他人的文件夹(或者模块)可以不必关心;项目稳定阶段,也就是每天的变更量很小了,所有项目成员与SVN服务器的更新、提交等操作需要针对项目的所有文件夹(或者模块),各个项目成员在其本地编译时本地工作区的全部项目程序(或者资料)均为最新的版本,保证项目作为整体能够顺利运行。

2. 能躲就躲

尽量保证一份文件只有一个项目成员在编辑。举例说明:程序员A负责底层中文件 DBAccess.cs的编写,如果程序员B的工作要求他为DBAccess.cs增加两个方法,程序员B应该通知程序员A来增加而不是自己增加;如果此时A非常繁忙需要B自己增加,就需要B先更新本地的DBAccess.cs,然后开始修改,修改完成后立即提交并通知A更新本地的文件,通过缩短提交间隔来减少冲突。

2. 基于版本控制的开发流程

版本控制下的软件开发基本流程

注意:上述的流程中没有考虑测试和审核的步骤。

3. 各阶段中svn的使用方法介绍

3.1. 安装后的常规设置

3.1.1. 中文界面的设置

将TortoiseSVN的操作语言设置为中文,控制文件夹使用“_SVN”以便支持Asp.net项目。

3.1.2. 忽略文件

为防止在提交操作时将不必要的文件上传到SVN服务器上,可将项目中不需要受SVN控制的文件和文件夹通过设置忽略选项的方式排除掉。常被忽略的文件有 _* obj *.db *.resharper* *.Load *.pdb *.bak。可以根据实际需要来修改忽略参数, 每个需要忽略的文件(文件夹)名称之间用空格作分隔符,需要忽略的文件夹只要写文件夹名称就行,例如 obj,忽略obj文件夹及所包含文件;_*忽略所有_(下划线)开头的文件夹及所包含文件。注意,这个设置仅对本机有效,而且对本机的所有项目的本地工作区有效,对其他项目组成员没有影响。被忽略的文件仍可以通过“添加”命令使其受SVN控制。

操作界面如下图,只需将忽略参数填写在“全局忽略模式”后的文本框中即可。

3.1.3. 配置强制注释

项目负责人通过设置项目的TortoiseSVN:logminisize设置为5,以便强制注释。设置方法:在项目的本地工作区文件夹上点击鼠标右键选择“属性”,进入 Subversion标签,选中TortoiseSVN: logminisize,确保复选框“递归应用该属性”选中,取值设为5,其意思是指提交的注释最短长度为五个字。注意,这个设置对其他项目成员的也有效,但是对别的SVN客户端工具(如AnkhSVN)无效。如图:

3.2. 初始化版本库

初始化版本库有两种常用的方式:

3.2.1. 直接“导入Import…”

对要执行导入操作得项目文件夹进行如下清理:

1. 把项目中不需要的文件删除。(临时文件、编译器创建的文件,比如*.obj、二进制文件等。)

2. 把文件夹和子文件夹中的所有文件整理一遍。虽然你可以在导入之后再来进行重命名或删除等操作,但是还是推荐你在导入之前把你的项目整理好。

在资源管理器(windows explorer)中选择项目(本地硬盘上)的根文件夹,单击鼠标右键,选择导入Import…命令,跳出一个对话框:

在这个对话框中你需要填写你要将项目导入仓库的URL地址(svn必须小写)。导入信息(Important Message)是用来记录日志信息的。注意:与“忽略样式exclude pattern”匹配的文件或文件夹不会被导入,除非选择了“包含忽略的文件”选项。

按下“确定”按钮后,TortoiseSVN就开始把整个文件夹树(包括所有文件)导入到仓库。用来做“导入Import”操作的这个文件夹的名字不会出现在仓库中,只有文件夹中的内容会出现。注意:刚才用来做“导入Import”操作的这个文件夹并没有处于版本控制下!要获取一份处于版本控制之下的[本地工作区]副本,你需要对刚导入的版本做一次“检出Checkout”操作。

3.2.2. “检出Checkout”—>“提交Commit”

新建一个空文件夹作为[本地工作区]的存放文件夹(建议与项目同名),在文件夹上(或者文件夹里)单击鼠标右键后在命令菜单中选择“检出Checkout…”,出现操作窗口。注意:只能检出Checkout到一个空文件夹。

把本地硬盘上的项目文件夹中的内容(不要复制项目的根文件夹)全部复制到[本地工作区]  文件夹中,并对文件夹中进行清理操作(同“导入Import”操作前的清理操作)。然后选择[本地工作区]  文件夹单击鼠标右键跳出菜单,选择命令“提交Commit…”:

提交对话框会显示每一个有修改的文件,包括新增的,删除的,还有没有版本控制的。如果不想“提交Commit”某个有变更的文件,只需取消勾选那个文件即可。相反,如果要提交某个未受版本控制的文件,只需勾选它就可以然后“提交Commit”即可。

3.3. 日常开发中的SVN操作

3.

3.1.

3.2.

3.3.0. 版本号的解释

SVN系统中的版本号准确应该叫做“修订版本号”,每当版本库接受了一个提交Commit,文件系统进入了一个新的状态,叫做一次修订(revision),每一个修订版本被赋予一个独一无二的、递增的自然数,这个自然数就是修订版本号。

受控项目中任何一个受控文件/文件夹进行了修改提交Commit操作,项目的版本号就会提升一次,没有进行修改的文件/文件夹其版本号不会发生变化。受控项目每一个装态都包含项目的所有文件/文件夹,引起该次版本号增加的即修改了的文件/文件夹保存新副本,没有发生修改的文件/文件夹保存引用,因此项目中的文件/文件夹可能与项目的版本号不同。

3.3.1. 更新(Update)工作副本

把他人做的修改融合到自己的本地副本当中,这个把改动从服务器拿到本地的过程就是“更新Update”。“更新Update”操作可以针对一个文件,或几个被选择的文件,或某个文件夹中的所有文件。选择想要进行“更新Update”操作的文件和(或)文件夹,单击鼠标右键,在菜单中选择“更新Update”, 执行窗口显示正在“更新Update”的进度。他人做的修改会合并到自己的文件中,而自己所做的修改会被保留。如果不能合并,将会出现冲突(红色文字显示),冲突的文件图标将出现标志。

命令 “更新至版本Update to Revision...” 可以使[本地工作区]更新到自己选择的一个特定版本。

3.3.2. 解决冲突

选择的文件,点击鼠标右键菜单中选择“编辑冲突Edit Conflict”来打开合并工具或冲突编辑器,做一些必要的修改,然后保存文件。然后选择菜单中的“已解决的Resolved”命令执行,接着提交commit修改到仓库。

注意:命令“已解决的Resolved”并没有真正的解决冲突,它只不过是把“文件名称.扩展名.mine” 和 “文件名称.扩展名.r*”(r*中星号代表任意位数字,即版本号)删除,并允许你提交修改而已。因此,建议在有冲突发生时要先执行“编辑冲突Edit Conflict” 再执行“已解决的Resolved”;如果确信自己的修改是正确的,不需要保留他人的修改,可将文件名称.扩展名.mine去掉“.mine”后缀,并把“.r*”后缀的文件和“”的文件删除,然后正常“提交Commit”,版本库中将保存自己的版本。

3.3.3. 提交修改到仓库

强烈建议在提交之前,应该确认[本地工作区]  是最新的。可以直接作一次“更新Update”操作,或者先“检查更新Check for Modifications”看看在本地或在服务器上哪些文件修改过。如果没有这样的操作直接提交的话,很有可能出现冲突现象。“检查更新Check for Modifications”操作后的结果界面如下:

如果[本地工作区]  是最新的,并且没有冲突,就可以提交你的修改了。选中你想要提交的任意文件或文件夹,然后选择在菜单中选择“提交Commit…”在提交对话框中双击一个有修改的文件,可以启动外挂的比较工具来显示修改细节。 在按下“确定OK”按钮之后,会显示提交的进程情况。

3.3.4. 比较差异(Diff)

[本地工作区]  修改后,被修改的文件出现标志,选择 “比较差异Diff” 命令,可以查看该文件与版本仓库中文件具体差异,选择命令后出现对应的差异察看窗口。

3.3.5. 加入(Add)新文件/新文件夹

想把在开发过程中创建的新文件/文件夹加入到SVN控制之下,可以这样做:选中文件/文件夹(在新文件/文件夹所在父文件夹点击右键),然后在菜单中选择“添加Add”命令。不需要受SVN控制的文件请取消钩选。

在把文件或文件夹加入到控制之下后,这些文件或文件夹就会显示为一个Added覆盖图标的样子,接下来必须对[本地工作区] 执行提交commit操作,以便其他团队成员能够看到这些文件或文件夹。

3.3.6. 删除、重命名、移动

选择要删除(或重命名)的文件/文件夹,点击鼠标右键选择相应命令:

如果使用TortoiseSVN的“删除Delete”操作删除了一个文件/文件夹,文件就已经从[本地工作区]中删除了,而被“删除Delete”的文件夹将显示为覆盖图标。要恢复被“删除Delete”文件/文件夹,只需对他的上级文件夹进行“SVN还原revert”操作即可。

如果要在[本地工作区]内移动文件,可以使用鼠标来拖拽:

1. 选中要移动的文件或文件夹。

2. 用鼠标右键拖拽他们到[本地工作区]中一个新的文件夹。

3. 松开鼠标右键。

4. 在跳出的菜单中选择相应命令,如下图:

如果一个删除操作不是使用TortoiseSVN的“删除Delete”操作完成的,而是就像平常删除文件那样删除的。提交时,对话框窗口还是会显示这些删除的文件,并提示自己把它们从版本控制下删除。所以如果忘记使用TortoiseSVN“删除Delete”操作来删除这些文件,仍可在这里补上。

3.3.7. 取消改变(revert)

如果要取消对一个文件/文件夹所做的修改,只需用鼠标右键单击该文件/文件夹,选择TortoiseSVN子菜单中的“SVN还原revert”命令,在操作窗口中会显示需要还原的文件/文件夹,勾选文件/文件夹后按下“确定OK”按钮即可。注意这里所做的取消修改只能返回到该文件/文件夹上次“更新Update”后的状态。

3.3.8. 修订日志窗口

每一次修改和提交,都应该做好日志记录。这样开发过程中就有了一个详细的记录,以后便可找出每一个修改是如何修改以及为什么这样修改的。

日志对话框会显示所有日志信息。显示分成3个部分:

1. 最上面部分显示的是所有被提交的版本列表。显示有日期时间、提交者、修订版本号和日志信息的前面一部分。用蓝色显示的行表示有某些文件被复制到了这个版本。(也许是从一个分支来的)

2. 中间部分显示的是选中版本的所有日志信息。

3. 底部显示的是选中版本所做修改的文件和文件夹列表。

还不仅仅是这些,对话框中还提供了很多的菜单命令可以使用。

3.3.9. 文件库浏览器

选择“文件库浏览器”菜单,就可以打开Subversion服务器上版本库的结构,并可以对版本库中的文件/文件夹进行操作,如下图:

SVN配置使用的更多相关文章

  1. centos apache svn配置

    单独安装svn服务: 安装svn软件 yum install subversion 创建根目录 mkdir -p /var/www/svn 创建版本库repos svnadmin create /va ...

  2. Eclipse插件SVN配置

    Eclipse插件SVN配置 方法一 打开Eclipse点击[Help]-[Install New Software] 点击右边[Add]-在弹出窗口中输入 Name:svn Location:htt ...

  3. svn配置

    svn配置 subverson.conf <Location /svn> DAV svn SVNListParentPath on SVNParentPath /var/repo Auth ...

  4. centos7.2环境nginx+mysql+php-fpm+svn配置walle自动化部署系统详解

    centos7.2环境nginx+mysql+php-fpm+svn配置walle自动化部署系统详解 操作系统:centos 7.2 x86_64 安装walle系统服务端 1.以下安装,均在宿主机( ...

  5. Xcode SVN配置

    Xcode SVN配置 编辑 ~/.subversion/config 文件  注意:假设".subversion"文件夹不存在.请执行"svn status" ...

  6. SVN配置钩子

    安装测试环境:109  CentOS4.6 安装: SVN1.32http://subversion.tigris.org/downloads/subversion-1.3.2.tar.gz安装:解压 ...

  7. svn配置多仓库与权限控制

    telnet: connect to address 47.106.115.228: Connection refused svn执行上下文错误由于目标计算机积极拒绝无法连接 标签: svn 2017 ...

  8. IntelliJ IDEA下SVN配置及使用

    一.在IDEA中使用SVN,首先需要下载安装 TortoiseSVN 插件. 打开 TortoiseSVN 下载地址,选择适合自己的系统类型下载. 接下来,进行安装即可.选择Modify,默认 com ...

  9. SVN配置自启动-1053错误

    主要内容:解决启动“配置的svn自启动服务”报1053错误 1. 环境: 系统: wind10 svn服务端版本: VisualSVN-Server-3.8.0-x64 2. 配置自启动 以管理员身份 ...

  10. SVN配置以及自己主动部署到apache虚拟文件夹

    SVN配置以及自己主动部署到apache虚拟文件夹 一.VisualSVN server 服务端和TortoiseSVNclient下载 VisualSVN下载:http://subversion.a ...

随机推荐

  1. BBC票选出的100部最经典美国电影,你看过几部?

    BBC票选出的100部最经典美国电影,你看过几部? 导读:BBC票选出的100部最经典美国电影,你看过几部? 2015-07-27欧美内参欧美内参欧美内参 微信号zoujinoumei 功能介绍< ...

  2. MySQL源码 information_schema新增表

    information_schema是MySQL下的DB, 存储了数据库的数据字典,但OS系统上,并没有information_schema下表的数据和结构文件. 所以,MySQL在针对informa ...

  3. poj1741 bzoj2152

    树分治入门 poj1741是男人八题之一,经典的树分治的题目这里用到的是点分治核心思想是我们把某个点i作为根,把路径分为过点i和不过点i先统计过点i这样的路径数,然后在统计其子树中的答案,这样就不断地 ...

  4. java线程(3)-多线程死锁

    产生死锁的条件: 1.有至少一个资源不能共享2.至少有一个任务必须持有一个资源并且等待获取另一个被别的任务持有的资源3.资源不能任务抢占4.必须有循环等待 package com.thread; /* ...

  5. android左右晃动动画(红包左右晃动)

    TranslateAnimation animation = new TranslateAnimation(0, -5, 0, 0); animation.setInterpolator(new Ov ...

  6. TOAD Menu Shortcuts 快捷键

    TOAD Menu Shortcuts Category Command Shortcut Conflict File AWR Browser File Compare Files File DBMS ...

  7. pyhton 查找一个数的所有因子 以及 判断一个数是否是质数 两个小脚本

    最近看到一个网站, 欧拉计划.挺好玩,都是一些算法题.这是本站:http://projecteuler.net/problems 这个是中文站:http://pe.spiritzhang.com/ 下 ...

  8. ARM学习笔记9——ARM汇编汇编语言中的伪指令

    ARN汇编器支持ARM伪指令,这些伪指令在汇编阶段被翻译成ARM或Thumb指令.ARM伪指令包含ADR.ADRL.MOV32和LDR.一.ADR伪指令 1.作用 ADR是小范围地址读取伪指令,基于P ...

  9. Fiddler基本用法以及如何对手机抓包

    一.Fiddler是什么? ·一种Web调试工具. ·可以记录所有客户端和服务器的http和https请求. ·允许监视.设置断点.修改输入输出数据. 官方文档(英文):http://docs.tel ...

  10. ElasticSearch elasticsearch-servicewrapper 在linux上的安装部署全程记录

    原文地址:http://www.cnblogs.com/tianjixiaoying/p/4316011.html 由于项目需求,需要在linux平台搭建一套ES服务.在搭建过程中,遇到各种各样的问题 ...