`
mywebcode
  • 浏览: 999945 次
文章分类
社区版块
存档分类
最新评论

svn使用说明详解

 
阅读更多

文档规则

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

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

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

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 forModifications”看看在本地或在服务器上哪些文件修改过。如果没有这样的操作直接提交的话,很有可能出现冲突现象。“检查更新Check forModifications”操作后的结果界面如下:

如果[本地工作区] 是最新的,并且没有冲突,就可以提交你的修改了。选中你想要提交的任意文件或文件夹,然后选择在菜单中选择“提交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服务器上版本库的结构,并可以对版本库中的文件/文件夹进行操作,如下图:

分享到:
评论

相关推荐

    SVN1.6.17 安装详解

    SVN1.6.17 安装过程全记录,内含软件的下载地址等信息,包括详尽的文字和图片说明,安装过程中对特别的注意事项做了标注,能使您快速方便的安装该软件,开始您的团队开发之旅。该文档系个人总结,不足之处,敬请谅解...

    SVN安装与使用详解

    SVN安装与使用详解,包括客户端、服务器端的安装文件,以及使用说明文档

    svn使用大全(详解配有图片)

    从svn的安装,配置,使用,就提交,下载时有可能出现的问题都有详细的介绍及说明。

    SVN+ant 服务器代码打包编译流程详解,内含详细安装以及操作说明

    SVN+ant 服务器代码打包编译流程详解,内含详细安装以及操作说明build.xml+build.properties详解,可以直接修改路径后打包编译SVN代码。

    在MyEclipse 中加载SVN 流程详解

    演示了整个添加的过程 有详细的截图说明 文档采用的版本为 MyEclipse 7.5

    SVN服务器搭建、配置和使用详解【技术文档】

    非常详细的SVN服务器搭建、配置和使用说明,doc格式,27页。

    配置管理svn

    配置管理svn详解。工具使用说明。手把手教你学会svn使用 。

    SVN分支与合并

    SVN分支与合并,从创建分支到合并分支,步骤图文详解

    SVN与MyEclipse6.5 集成安装详解

    SVN与MyEclipse6.5集成安装过程全记录,内含软件的下载地址等信息,包括详尽的文字和图片说明,安装过程中对特别的注意事项做了标注,能使您快速方便的安装该软件,开始您的团队开发之旅。该文档系个人总结,不足之...

    MyEclipse安装配置svn

    MyEclipse安装配置svn ,svn资源,说明文档,配置方法详解

    Linux下svn命令详解

    本文主要是说明linux下svn命令的使用方法,同时记录自己在使用中遇到的一些疑惑。  1、Linux命令行下将文件checkout到本地目录  svn checkout url(url是服务器上的目录)  例如:svn checkout svn://192.168....

    apache+svnserver配置

    详细的配置说明!!!!! apache+svnserver配置详解!

    详解Linux运维CentOS系统SVN双备份Shell脚本

    前言 SVN是Subversion的简称,是一个开放源代码的版本控制系统,采用了分支管理...使用CentOS 6系列系统,安装vsftpd,修改配置参数。此外vsftpd的备份目录可以做RAID1或RAID5。 执行脚本将svn项目进行本地目录备份

    SVN服务器下载代码,SC9820E编译,刷机,下载,出现的错误总结

    1.如何在linux上下载SVN代码 2.有展讯编译流程的详解 3.展讯刷机流程详解 4.展讯下载到硬件里面的说明 5.本人自己实践编译的理解以及遇到的问题总结

    TortoiseSVN1.6.16 安装详解

    TortoiseSVN1.6.16安装过程全记录,内含软件的下载地址等信息,包括详尽的文字和图片说明,安装过程中对特别的注意事项做了标注,能使您快速方便的安装该软件,开始您的团队开发之旅。该文档系个人总结,不足之处,...

    TortoiseSVN客户端常用命令详解[DOC]

    本文摘自于百度文库,里面对常用命令的讲解简洁易懂,并有举例说明,感谢原创作者,由于百度文件下载总是出错,上传CSDN,望能帮到各位

    linux中scp命令和scp命令用法大全

    linux之cp/scp命令+scp命令详解  名称:cp 使用权限:所有使用者 使用方式: cp [options] source dest cp [options] source… directory 说明:将一个档案拷贝至另一档案,或将数个档案拷贝至另一目录。 把计

    package.json中homepage属性的作用详解

    Package.json 属性说明 name – 包名。 version – 包的版本号。 description – 包的描述。 homepage – 包的官网 url 。 author – 包的作者姓名。 contributors – 包的其他贡献者姓名。 dependencies – ...

    搭建Tomcat 8源码开发环境的步骤详解

    1、下载tomcat源代码,我这里是通过svn的方式下载的,svn下载地址 2.下载安装maven工具,这里我就不多说了,安装说明太多了,自己网上找。 3.IDE,我这里使用idea 生成maven工程 我的代码本地目录是: /Users/...

    Git权威指南PDF完整版

    26.1 使用 git-svn 的一般流程/ 380 26.2 git-svn 的奥秘/ 386 26.2.1 Git 库配置文件的扩展及分支映射/ 387 26.2.2 Git工作分支和 Subversion 如何对应/ 388 26.2.3 其他辅助文件/ 390 26.3 多样的 git-svn 克隆...

Global site tag (gtag.js) - Google Analytics