SVN集中式版本控制工具

SVN集中式版本控制工具

SVN简介

Apache Subversion通常被缩写成SVN,是一个开放源代码的版本控制系统,Subversion在2000年由CollabNet Inc开发,现在发展成为Apache软件基金会的一个项目,同样是一个丰富的开发者和用户社区的一部分。SVN相对于的RCS、CVS,采用了分支管理系统,它的设计目标就是取代CVS。互联网上免费的版本控制服务多基于Subversion。它是一个自由、开源的版本控制系统,一组文件存放在中心版本库,记录每一次文件和目录的修改,Subversion允许把数据恢复到早期版本或是检查数据修改的历史,Subversion可以通过网络访问它的版本库,从而使用户在不同的电脑上进行操作。 

SVN文件图标含义

绿色的对勾:表示Subversion文件状态正常。
红色感叹号:在你开始编辑一个文件之后,状态就变成了已修改,而图标重载已变成了红色感叹号。通过这种方式,你可以很容易地看出那些文件从你上次更新工作复本被修改过,且需要提交。
黄色感叹号:如果在提交的过程中出现了冲突,图标就会变成了黄色感叹号 。
加号:告诉你有一个文件或者目录已经被计划加入到版本控制中。 

SVN服务端安装

下载地址如下

http://subversion.apache.org/packages.html

个人认为最好用VisualSVN server服务端和TortoiseSVN客户端搭配使用

1586872317727

安装步骤

一直下一步,下面重点介绍一下:

1586872669818

Location:SVN软件安装目录

Repositories:指定版本库

Server Port:指定端口

Use secure connection:使用安全连接

SVN服务端配置

1)新建版本库,取个名字,然后一直下一步即可

1586873069912

2)建立用户和分组,并且分配权限

建立用户:右击用户,创建用户即可

1586873376418

这里右击用户可以对用户进行一些操作,Suspend可以禁用用户或启用用户

1586873572810

建立用户组:可以根据具体项目分配不同人员

1586873786925

建立权限:设置项目用户权限

1586873884845

添加用户组读写权限

1586874040566

SVN客户端安装

参考其他文章安装即可

SVN客户端常用命令

Checkout (从SVN服务器克隆代码)

服务器中右击项目可以复制SVN项目路径

1586874641904

在本地任意文件夹下右击,选择Checkout,将路径和文件夹路径输入即可

1586874758933

设置权限之后,需要填写用户名和密码

1586875225255

之后即可下载服务器相应文件夹下的文件

注意:它是下载路径文件夹下的文件,不包含当前路径文件夹;.svn这个隐藏目录记录着两项关键信息:工作文件的基准版本和一个本地副本最后更新的时间戳,千万不要手动修改或者删除这个.svn隐藏目录和里面的文件,否则将会导致你本地的工作拷贝(静态试图)被破坏,无法再进行操作,一般要让SVN失效可以用删除所有.svn的方法。

Update(更新代码)

更新本地代码与SVN服务器上最新的版本一致,只要在需要更新的文件夹上点击右键或者在文件下空白处点击右键,选择”SVN Update” 就可以了。如果要更新指定版本中的内容,点击右键执行SVN菜单中的“Update to reversion“就可以了。

Add(添加到变更列表)

提交到版本库的2种方法:
方法一:先提到变更列表中,再commit到配置库中,选择新增加的文件,右键SVN菜单执行“Add“操作提交到”变更列表中”,然后右键SVN菜单执行”SVN Commit”提交到版本库中。

方法二:不提交到变更列表中,而是直接commit配置库中,选择该文件,右键svn菜单执行”SVN Commit”操作。

Check for modifications(检查更新)

此功能可以显示你所做的修改有哪些还没有提交的,此功能不光能看到对文件的修改变化,所有的变化都能看到,包括增加文件或者目录,删除文件或者目录,移动文件或者目录等,如果你点击了检查版本库,那你还可以看到版本库里的改动,既别人提交了哪些文件的改动,你还没更新到本地。

Commit(提交代码)

Svn的提交是将在工作空间做的修改进行提交,包括文件内容的修改、文件或目录的添加、删除、命名、移动等操作,在哪个目录执行该命令就提交哪个目录文件。

Show log(查看日志)

通过此功能可以查到谁、什么时候、对那个目录下的那些文件进行了那些操作。

Repo-browser(版本库浏览)

此功能是用来浏览需要查看的资料库,在本地文件夹下点击右键,选择Repo-browser,在弹出的对话框中输入资料库地址,再输入用户名和密码,就能查看到你需要查看到版本库的内容,在这你还能看到那些文件被谁锁定了。

Rename(重命名)

修改文件名,选中需要重命名的文件或文件夹,然后右键“Rename“,在弹出的对话框中输入新名称,点击”ok”按钮,并将修改文件名后的文件或文件夹通过“SVN Commit”提交到SVN服务器上。

Delete(删除文件)

如果被删除的文件还未入版本库,则可以直接使用操作系统的删除操作删除该文件。

如果被删除的文件已入版本库,则删除的方法如下:
方法一:选择被删除文件,右键svn菜单执行”delete”操作,然后选择被删除文件的父目录,右键svn菜单执行”SVN Commit”。

方法二:使用操作系统的删除操作删除该文件,然后选择被删除文件的父目录,右键svn菜单执行”SVN Commit”,在变更列表中选择被删除的文件,然后提交。

Revert(回退)

可以回退到之前的版本,可以选择要回退的版本。

SVN创建项目分支

从trunk(主干上)创建分支(branch)步骤如下:

1)右键trunk --> branch/Tag 如下图:

131022528242622

2)在弹出的对话框设置如下图:

131023226843499

3)点击ok按钮后,就可以在VisualSVN Serval服务器上新增newBranch,是从服务器trunk上的文件拷贝一份的,再次更新项目,会发现分支可以下载下来,或者将分支的SVN给别人,让别人下载分支,而不影响主干文件。

SVN合并项目分支

分支修改之后合并到主干:

1)回到我们刚刚的主干(trunk)文件夹下,鼠标右键该文件夹 --> TortoiseSVN --> Merge

131027053879661

2)过程如图所示

131027387158880

next之后,点击merge合并分支

131028033098932

3)如果想将主干内容合并到分支上,可以在分支文件夹上执行上述操作即可,不过在合并的路径上是反过来的。

删除项目与SVN关联

方案一:创建delectSvn.reg脚本,然后执行,之后右击需要删除svn链接的文件夹会出现脚本配置的名称,点击DelectSVNLine即可删除关联。

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN] 
@="DelectSVNLine"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN\command] 
@="cmd.exe /c \"TITLE Removing SVN Folders in %1 && COLOR 9A && FOR /r \"%1\" %%f IN (.svn) DO RD /s /q \"%%f\" \""

清除脚本:win+R,输入regedit打开注册表,找到HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN这个文件删除就OK。

方案二:直接逐级地删除项目中隐藏的.svn文件夹。

方案三:如果用的是TortoiseSVN客户端,则先在另外一处建立一个新目录A,右键点住svn目录并拖动到A上松手,在弹出的菜单中选择“SVN将版本控制的条目复制到目标位置”。

解决版本冲突方式

更新时,可能由于别人与自己同时修改一段代码并且别人已经提交,这样就会发生版本冲突;冲突有3个文件,一个mine是自己修改后的,一个比较靠前的是自己修改前的,另一个是服务器上的。

解决方式一:对比3个文件,将合并之后内容重新输入冲突的文件中,删除这3个文件,最后重新上传。

解决方式二:选择冲突文件,右键Editconficts,红色的部分是冲突代码:theirs表示当前服务器端最新的代码,Mine表示自己修改后的代码,Merged表示合并后的代码。点击红色后右键选择:use this text block就可以将该部分代码作为合并后的代码,也可以对比着修改合并后文件。

由于冲突导致重要代码被覆盖的情况:冲突发生时如果采取的措施不对可能会导致部分代码丢失,如果想要还原之前的代码也很容易。选择文件,右键选择show log在这里面你可以看见之前提交的所有版本,找到你想要恢复的版本右键选择revert to this version 就可以恢复了。
posted @ 2018-08-28 21:02  肖德子裕  阅读(596)  评论(0编辑  收藏  举报