zoukankan      html  css  js  c++  java
  • SVN的学习

    SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于CVS,它采用了分支管理系统,它的设计目标就是取代CVS

    为什么需要SVN

    通常软件开发由多人协作开发,如果对代码文件、配置文件、文档等没有进行版本控制,将会出现很多问题:

    • 备份多个版本,占用磁盘空间大
    • 解决代码冲突困难
    • 容易引发BUG
    • 难于追溯问题代码的修改人和修改时间
    • 难于恢复至以前正确版本
    • 无法进行权限控制
    • 项目版本发布困难

    所以我们需要使用版本控制工具,SVN的作用正是在于多人协作,版本回退等等问题上。SVN的使用较为简单,而且可以跨平台使用,属于C/S结构的软件,需要客户端和服务器端,一般来说应该是一台服务器或电脑作为服务器端,我们在服务器端中建立仓库,但是为了学习方便我们在本机即模仿客户端又模仿服务器端。

    客户端下载地址:https://tortoisesvn.net/downloads.html

    服务器端下载地址:https://www.visualsvn.com/downloads/

    服务器端安装

    基本上和安装一般软件一样,一路next即可,但是需要注意以下几点:

    这个端口号默认使用443,也可以使用8443这个备用端口号

    如果两个端口都有冲突,我们可以找到端口是哪个程序,把程序进程停止

    在CMD中使用命令:

    找到占用端口的程序的PID : 

    我们在任务管理器,找到pid值,停止掉就行了

    我们的Tomcat也可以使用该方法解决8080占用的问题

    如何知道服务器端安装好了?

    如果安装好了,我们可以在系统 —> 服务中可以找到SVN  或者是在CMD中使用命令:

    svnadmin --version

    就会显示svn服务器的版本

    客户端的安装

    客户端的安装没什么值得说明的,一路next,需要说明的是该客户端有中文语言包哦,就在其下载页就可以找到。语言包的安装也是一路next,它会自动找到客户端的安装位置,不需要我们来指点,很简单,然后我们在客户单中setting选择中文即可:

    如何知道客户端安装好了?

    只要鼠标右键出现:

    使用命令操作SVN

    1. 首先我们需要建立仓库,在CMD中使用命令:

    svnadmin create 仓库位置

    如: svnadmin create D:webApp

    2. 还需要将SVN服务器关联到这个仓库,命令:

    svnserve -d -r 仓库地址

    -d 表示svn服务在后台运行, -r指明仓库地址,注意这是黑窗口的光标会移到下一行并不停的闪烁,就表示成功的开启SVN服务,我们不要关闭这个黑窗口哦

    注意:命令是svnserve

    接下来我们就可以开始同步仓库中的东西了,现在相当于同步空仓库中的东西,在另一个文件夹中,在使用同步工作吧

    同步仓库

    1. 默认SVN是不允许匿名用户访问仓库的,所以我们需要将这个仓库的conf/svnserve.conf 文件的第19行修改为write,一点要是19行

    2. 第一次同步需要先检出(checkout)

    在文件夹中右键检出,会出现需要我们输入仓库地址的地方:

    因为我们之前已经将仓库与SVN客户端关联,所以我们要使用: svn://localhost 这个地址即可,如果不再同一台机器上,把localhost改为ip地址

    检出成功之后,可以在这个文件夹中看到一个隐藏的.svn文件夹

    因为是一个空仓库,所以没有什么文件存在,我们可以新建一个文件,右键SVN提交

    提交的时候,需要我们填写一些提交信息和选中要提交的文件,其实提交信息写不写都可以,但是强烈推荐写上提交信息,因为正是这些信息帮助我们选择回退的版本。

    3. 其他同步该仓库的用户就需要SVN更新,更新之后就可以得到这个新建的文件

    注:SVN提交(commit) SVN更新(update)都是在文件夹的空白位置鼠标右键可以看到的

    SVN中的图标

    我们在使用SVN管理代码的时候,文件会出现一些图标,来认识一下常见的图标吧

    需要说明的是,但当发生代码冲突的时候,叹号图标并不会立即出现,存在延迟,所以我们还是以错误信息为准吧

    忽略某个文件或是某类文件

    我们在需要忽略的文件上右键,可以选择忽略,或者或略该文件类型的文件,或者对于文件夹可以递归的忽略

    回退版本

    回退版本的依据就是我们之前提交的提交信息,根据这些日志信息,我们可以准确的知道需要回退到哪个版本,所以还是建议每次提交都写上提交信息

    使用图形界面创建仓库和用户

    终于要使用图形界面了,我们安装的SVN服务器端支持图形界面的:

    创建仓库和用户都是很简单的,重点在于为用户分配权限:

    可以给不同用户分配读写权限

    我们还可以在浏览器中浏览我们仓库信息

    在Eclipse中配置SVN插件

    在Eclipse的安装目录中dropins下新建一个SVN文件夹,在里面放入SVN插件的文件,重启Eclipse即可

    检验是否安装成功

    出现SVN的视图就表示安装成功了

    发布项目到svn(add到svn)

    第一步 右键点击项目 team—share project

    第二步 选择使用版本控制工具

    第三步 创建仓库位置

    输入仓库路径

    第四步 点击finish进行把项目add到svn上

    (1)输入用户名和密码,可以把勾上,以后就不用每次都输入了

    (2)在项目上有图标变化,右键点击项目,点击team-提交

    点击ok

    图标变成圆柱的图标,表示发布完成

    从svn服务器下载项目(checkout)

    第一步 打开svn资源库,没打开的话,就在view中找到打开

    (1)添加svn资源库

    (2)输入仓库路径

    第二步 右键点击要下载项目,点击 检出为

    点击finish完成

    处理版本冲突

    冲突的表现为我们后修改的代码提交不上:

    版本冲突的问题难以避免,我们可以在选择统一的时间来提交,专门的人员来处理代码冲突。

    但是我们遇见了应该怎么办呢?

    1. 先备份我们写的代码

    2. 同步更新代码,也就是SVNupdate操作

    3.  将多余的.mine .r6 .r7(这两的文件不一定是这两个文件后缀) 删除,留下代码冲突文件再修改,之后再提交即可

  • 相关阅读:
    What is Continuous Integration?
    10 Essential TypeScript Tips And Tricks For Angular Devs
    javascript 的事件绑定和取消事件
    Directive Controller And Link Timing In AngularJS
    做事情的态度——做精做细
    How to simplify a PHP code with the help of the façade pattern?
    Can we say objects have attributes, states and behaviors?
    represent states with objects
    【转】一次是不算数的
    nyoj27-水池数目 (求连通块数目)【dfs】
  • 原文地址:https://www.cnblogs.com/lz2017/p/7594068.html
Copyright © 2011-2022 走看看