【SVN】总结
一、什么是SVN?
SVN是现在很流行的一个开放源代码的版本控制系统。SVN是Subversion的简称,是相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的。
二、为什么使用SVN?
SVN是一门用来记录并控制软件产品数据的管理工具,在多人开发同一项目的时候, 起到了共享资源的作用。在多人共享资源的时候,最担心的就是文件非正常遗失或者被修改。或者出现问题找不到负责人,多人操控同一代码会被覆盖,造成资源浪费等等问题。而SVN可以实时的记录员工上传修改等操作的历史数据,还有不同版本记录。通过SVN,可以及时了解团队中其他成员的进度,轻松比较不同版本之间的细微差别,实现资料共享,利于成功复用,也避免了版本混乱、更改出错的现象,使用更加高效和安全!
三、SVN的下载安装
下载地址:https://tortoisesvn.net/downloads.zh.html
安装完不要忘记重启电脑
安装完成后,按下鼠标右键,会看到如下界面:
四、SVN的使用图标说明
常规:一个新检出的工作副本使用绿色的对勾做重载。表示Subversion状态正常。
修改:当我们开始编辑一个文件后,图标将变成红色感叹号。通过这种方式,可以很容易地看出我们对哪些文件进行了修改操作,但是还没有提交到版本库中;
冲突:如果在提交的过程中出现了冲突,图标将变成黄色感叹号。
只读:表示文件只能读不能修改。
已删除:这个图标表示当前文件夹下的某些文件或文件夹已经被计划从版本控制中删除,或是该文件夹下某个受控的文件丢失了。
锁定:如果我们拥有了一个文件的锁,并且Subversion状态是正常,这个重载图标将提醒我们:如果不使用该文件的话,请进行释放锁操作,允许其他成员提交对该文件的修改。
增加:加号告诉我们有一个文件或是目录已经被计划加入版本控制。
五、SVN常用操作
1、检出文件(保存到本地):
右键选择“Checkout”,填入需要检出文件的SVN地址和保存文件的本地路径,点击“OK”即可。
2、添加文件:
将想要添加的文件放入已经检出的文件夹内的合适位置,右击想要添加的文件,选择TortoiseSVN-Add。新添加文件图标由问号变成加号。右击文件,选择“Commit”(提交)即可。
3、删除文件:
在本地文件夹中删除,然后整个文件夹“Commit”(提交)一下即可。
4、更新、提交(检入)、还原:
右击想要更新的文件,选择Update进行更新;
右击想要提交的文件,选择Commit进行提交(检入);
右击想要还原的文件,选择TortoiseSVN-Revert进行还原(撤销本地未提交的修改)。
5、日志信息的查看:
右击想要查看的文件,选择TortoiseSVN-Show log,即可显示日志信息。
6、得到历史版本:
右击想要查看的文件,选择TortoiseSVN-Show log(显示日志信息)-选中所需的版本号右击,选择Revert to this revision(保存版本至)-revert,即可得到历史版本。
六、冲突
1、什么是冲突:
团队协同工作时,当多位团队成员同时修改同一个文件,造成本地文件与SVN系统中的文件版本不一致,而导致文件无法提交的情况。
2、冲突产生原因:
当团队协同工作的时候,多位团队成员同时操作一个文件。团队成员A操作完成后,将该文件提交到SVN上。此时,其他团队成员的本地文件与SVN上的文件版本不一致。当团队成员B操作完成并对文件进行提交操作时,就会产生冲突。即SVN版本是低版本不能覆盖高版本的版本库。
3、冲突产生表现:
文件提交时产生冲突,显示提示。
产生冲突后,文件下面会多出3个文件。
4、如何解决冲突:
遇到冲突时,需要update该文件。我们将看到三个带问号的文件:filename.mine,filename.rOLDREV,filename.rNEWREV。
面对文件冲突,我们可以选择以下两种方式解决冲突:使用工具解决冲突,用revert放弃所做的修改。
(1)利用工具解决冲突
右击冲突文件,选择TortoiseSVN-Edit conflicts。工具中会列出两个版本冲突的部分,并让我们选择使用哪个版本的内容。
右击想要保存的代码行,选择Use this text block/Use this whole file,保存该行代码/整个文件。
修改冲突后,右击想要保存的文件,选择TortoiseSVN-Resolved(已解决的)。解决后,带问号的三个文件将自动删除。最后选择commit提交到SVN解决冲突。
(2)用revert放弃所做的修改。
文件将还原到修改前,与服务器上版本一致。
5、关于避免冲突的建议:
修改文件之前,先进行一次update操作。
修改完成后,及时commit,不要在本地停留过长时间。
在多位团队成员协作时,尽量修改自己撰写的部分,尽量不要修改不属于自己撰写的部分。
出现冲突很正常,可以通过前面的方法解决,不要相互覆盖。