教学视频链接:https://edu.aliyun.com/course/83?spm=5176.10731334.0.0.778e6580zC0Ri0

版本控制工具SVN学习

1,SVN的简介

  在实际的项目开发之中一定不可能只有一个人完成项目【微型项目除外】,一定是多人开发进行的,如果是多人开发,就一定有可能造成修改的冲突。最初的版本控制工具是CVS【Linux下发展起来后移植到Windows下】,但是后来在CVS进行项目管理的过程之中会产生大量的历史无用文件,所以现在的开发在CVS之后都开始使用SVN了,也被很多公司来使用。使用版本控制工具可以有效的针对于你的项目中的代码进行管理,以及冲突的解决。

  但是不得不说SVN也有自己的局限性的,如果在一个项目团队之中开发,在SVN里面所保存的项目代码,【只能够被本地所管理】。而且SVN使用了客户端服务器模式,也就是说如果需要使用SVN一定要搭建有服务器,而后要单独配置客户端。也就是说CVS、SVN如脱离网络,那么就无法进行版本控制,所以现在最好用的是Git【Github推荐使用的工具】。

图1 SVN服务器与开发者的关系图

2,搭建SVN服务器端

  如果要想搭建SVN服务器端【最好将各种杀毒软件卸载】,必须要有单独的服务器端安装软件。SVN软件安装完成,但是需要对其进行配置才可以使用。

  ①需要准备出一个工作目录,假设:【e:\mysvnpro】为整个项目的工作目录;

  ②此时的【e:\mysvnpro】目录只是一个单独的空目录,并不是一个svn认可的目录,所以需要初始化此工作目录,

svnadmin create e:\mysvnpro

  初始化之后会自动在此目录之中保存一些列的配置文件。

  ③修改【e:\mysvnpro\conf】目录中的内容,所有相关配置都在此目录里面;

  svnserve.conf【服务器整体配置文件】、authz【授权、认证】、passwd【用户名与密码】、hooks-env.tmpl【钩子脚本环境配置文】

图2 svn配置文件目录conf中内容

  I、编辑【svnserve.conf】文件:

anon-access = read
auth-access = write
password-db = passwd
authz-db = authz
realm = My First Repository

  II、编辑【passwd】文件设置可以使用的用户信息:

rdrc_2017202120089 = Mufasa

  III、编辑【authz】文件设置权限:

 [groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe [/]
rdrc_2017202120089=rw # [/foo/bar]
# harry = rw
# &joe = r
rdrc_2017202120089=rw
* = # [repository:/baz/fuz]
# @harry_and_sally = rw
* = r

  以上配置完成可以直接使用rdrc_2017202120089用户就可以进行服务器的连接控制了。

  ④启动SVN服务:

svnserve -d -r e:\mysvnpro

  启动之后命令行窗口不要关闭。???

3,配置SVN客户端

  由于以后的大部分的项目都在Eclipse中完成,所以将直接在eclipse里面实现客户端的配置处理操作。如果要想在Eclipse里面使用客户端操作的工具,那么必须要保证有相应的插件工具完成。

  ①如果从标准的安装方式应该选择软件更新模式:

    ·【Help】→【Install New Software】→【add】加入SVN插件,但是应该中国的【墙】导致不一定可以成功

图3 Eclipse下的插件标准安装流程

图4 加载插件

  ②直接将插件包覆盖Eclipse插件包中的文件;

4,项目发布与检出

  SVN服务器和客户端都已经配置完成了,那么下面就需要进行项目的发布处理。在SVN的开发之中,必须有一个项目的发布者 ,之后才有项目的开发者。

  ①要保证创建一个你需要发布的项目;

  ②在项目上选择鼠标右键,而后选择共享项目;

图5 项目共享

  ③选择要共享的服务器类型,本次使用的是SVN【免费】;

  ④要求输入SVN路径;

    ·需要你的ip地址支持【ipconfig】:192.168.0.32

    ·SVN的连接地址变为:svn://192.168.0.32

图6 成功初发布项目

  项目发布完成并不意味着你的代码已经提交给服务器了。

图7 只提交自己修改的文件【注意注释】

  如果代码被正确提交则显示如下:

图8 正确提交显示

  但是如果要是有其他开发者,则需要服务器端取得这个项目代码。而对于开发者而言,则需要通过SVN服务器取得项目的初期代码。打开一个新的Eclipse【工作区不同】,随后进行导入的处理操作。

  ⑤【Flie】→【Import】→【SVN】→【】

  由于是第一次连接SVN服务器(而且也是新的工作区),所以我们需要自己输入SVN的地址:svn://192.168.0.32,到此所有的开发者都可以检出SVN服务器上的项目信息。

  ⑥更新版本库;先选择【更新】→【提交】

5,冲突解决

  既然是多人开发,那么就有可能两个人同时修改了一个文件的内容,那么此时如果都进行了提交,就有可能产生冲突。

  ①如果现在在你需要修改某些代码之前,请最好做出一个【更新】处理;

  ②如果真的多人修改了同一个文件,并且同时提交,那么一定会出现错误

    ·第二个开发者修改了代码并且提交到了服务器端;

    ·此时第一个开发者也准备提交代码,那么一定会有冲突产生,并且会在代码中标记冲突产生位置。

    ·那么应该由最后一个开发者手工修改冲突文件;但是修改完成之后你还是无法提交,因为需要做一个【解决冲突】的标记-【标记为解决】

6,总结

  这些工具就是一个配置的问题,而且你还必须会配置,工作之中都用这样的管理软件。但是Git更加好用!!!

版本控制工具SVN学习的更多相关文章

  1. SVN版本控制工具使用学习

    SVN版本控制工具使用学习 Subversion是优秀的版本控制工具. 1.下载和搭建SVN服务器 http://subversion.apache.org/packages.html 类型有5种,推 ...

  2. [.net 面向对象程序设计进阶] (23) 团队开发利器(二)优秀的版本控制工具SVN(上)

    [.net 面向对象程序设计进阶] (23) 团队开发利器(二)优秀的版本控制工具SVN(上) 本篇导读: 上篇介绍了常用的代码管理工具VSS,看了一下评论,很多同学深恶痛绝,有的甚至因为公司使用VS ...

  3. 版本控制工具svn的安装与简单使用

    版本控制工具多用于多人协作开发项目中,这不同于个人开发项目,想把自己代码怎样放置都可以,而且删除了代码很难查找. 版本控制工具类似于个人处理钱的过程,放于自己口袋管理类似于个人开发情形,如果自己钱丢了 ...

  4. 版本控制工具-svn

    两个疑问: 1.什么是版本控制? 2.为什么要用版本控制工具? 银联卡的特征: 1.受保护的 2.受约束的 如何与银联卡对应? 1.个人的代码--口袋里的钱 2.版本控制工具中的代码--银联卡里的钱 ...

  5. 版本控制工具--svn和git的使用(二) -----SVN的操作

    SVN的使用 开头: 对于svn的详解,我不是很熟,只是用过svn的客户端,没使用过服务端,在这里我只是简单说一下在svn的客户端怎么拉取代码,提交代码和修改冲突等等.svn的客户端我在Mac中用的s ...

  6. 版本控制工具--svn和git的使用(一) -----版本控制的好处以及分类

    版本控制工具 版本控制VCS(Version Control Systems)是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统.这个系统可以自动帮我们备份文件的每一次更改,并且可以 ...

  7. 版本控制工具——SVN

    一.需求 需求之一:备份 小明负责的模块就要完成了,就在即将Release之前的一瞬间,电脑突然蓝屏,硬盘光荣牺牲!几个月来的努力付之东流 需求之二:代码还原 这个项目中需要一个很复杂的功能,老王摸索 ...

  8. 版本控制工具 svn 一

    一.svn 概述 1).svn的作用 1.多人协作开发:2.远程控制:3.版本控制 2).软件控制管理工具发展之路 SCM:软件配置管理,所谓的软件配置管理实际就是软件源代码的 控制与管理. CVS: ...

  9. 版本管理工具SVN学习(一):简单的SVN命令,兼对比Git

    新公司用SVN来管理代码,而且公司自己搭建了SVN服务器,所以要学习下SVN的相关命令.服务器搭建等技能知识.上家公司是用Git管理代码,而且代码托管在git@oschina上,自然不用操心Git服务 ...

随机推荐

  1. C/C++程序基础-C++与C有什么不同

    1:C和C++的联系和区别? 答:C是一个结构化语言,它的重点在于算法和数据结构.对于语言本身而言,C是C++的子集.C程序的设计首先要考虑的是如何通过一个过程,对输入进行运算处理,得到输出.对于C+ ...

  2. go 两个数组取并集

    实际生产中,对不同数组取交集.并集.差集等场景很常用,下面来说下两个数组取差集 直接上代码: //两个集合取并集 package main import "fmt" //思想: / ...

  3. Leetcode题目279.完全平方数(动态规划-中等)

    题目描述: 给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n.你需要让组成和的完全平方数的个数最少. 示例 1: 输入: n = 12 输出: 3 解 ...

  4. antd源码分析之——标签页(tabs 3.Tabs的滚动效果)

    由于ant Tabs组件结构较复杂,共分三部分叙述,本文为目录中第三部分(高亮) 目录 一.组件结构 antd代码结构 rc-ant代码结构 1.组件树状结构 2.Context使用说明 3.rc-t ...

  5. DataSet转换为实体类

    /// <summary> /// DataSet转换为实体类 /// </summary> /// <typeparam name="T">实 ...

  6. CORS和jsonp实现跨域请求

    同源策略:所谓同源是指,域名,协议,端口相同,它是由Netscape提出的一个著名的安全策略,现在所有支持JavaScript 的浏览器都会使用这个策略.当浏览器同时打开两个tab页面(两个不同服务器 ...

  7. You don't have permission to access / on this server. wampserver3.1.0配置外网访问的问题

    参考各种wamp教程后外网仍然不能访问服务器,很是头疼 网上好多wampserver配置都比较久远,最新版本3.1.0的很少,首先打开httpd.conf文件(这部分较简略,详细可以参考其他wamp配 ...

  8. vector subscript out of range

    报这个错时会弹出一个窗口,貌似内存溢出,这是什么由于vector存放的数据超出了vector的大小所造成的. 解决方法如下: 在Vector<string> vector之后,不能直接通过 ...

  9. 记一次ceph集群的严重故障 (转)

    问题:集群状态,坏了一个盘,pg状态好像有点问题[root@ceph-1 ~]# ceph -s    cluster 72f44b06-b8d3-44cc-bb8b-2048f5b4acfe     ...

  10. Webupload+PHP上传大文件

    1.使用PHP的创始人 Rasmus Lerdorf 写的APC扩展模块来实现(http://pecl.php.net/package/apc) APC实现方法: 安装APC,参照官方文档安装,可以使 ...