SVN使用

一、SVN概述

1.SVN介绍

SVN是Subversion的简称,是一个自由开源的版本控制系统。

Subversion将文件存放在中心版本库里,这个版本库很像一个普通的文件服务器,不同的是,它可以记录每一次文件和目录的修改情况,这样就可以借此将数据恢复到以前的版本,并可以查看数据的更改细节

2.SVN基本概念


SVN使用图解

问题:怎样让系统允许用户共享信息,而不会让他们因意外而互相干扰?

复制-修改-合并方案(Subversion默认的模式)

在这种模型里,每一个客户读取项目配置库建立一个私有工作副本——版本库中文件和目录的本地映射。

用户并行工作,修改各自的工作副本,最终,各个私有的复制合并在一起,成为最终的版本,这种系统通常可以辅助合并操作,但是最终要靠人工去确定正误。

3.SVN架构


svn架构

Subversion支持LinuxWindows,更多是安装在Linux下。

源代码版的解压就能用

二进制文件版解压后要安装

 svn服务器有2种运行方式:

一.独立服务器版本(源代码版的解压就能用)

二.借助apache运行版本(二进制文件版解压后要安装,安装文件,根据不同的系统选择)。             

两种方式各有利弊?

 svn存储版本数据也有2种方式:

BDB(一种事务安全型表类型)和FSFS(一种不需要数据库的存储系统)。因为BDB方式在服务器中断时,有可能锁住数据,所以还是FSFS方式更安全一点(基于文件系统)

二..使用篇(重点)

SVN :是一种集中式管理代码的版本控制系统,原理就是把代码都保存到一个固定的位置(仓库),每次从这个位置拷贝更新代码,进行编辑;再把修改后的代码提交到该目录中。

SVN是基于客户端和服务端(实际开发更多安装是在linux下)的方案::

多人协作开发也是如此。因此需要一个服务器用于保存和管理库文件(要保存的代码等文件)的服务端——VisualSVN Server。实际开发服务端更多是安装在Linux下。

还需要一个用户的操作端,用于提交更新检出代码,

常用的有Eclipse的Svn插件,以及TortoiseSVN(小乌龟)。                 

 SubVersion官网:http://subversion.apache.org/

一.服务器端-VisualSVN安装与配置

1,VisualSVN安装与创建仓库



在开始运行中录入services.msc


这个服务要开启

在开始运行中查找visualSVN Server Manager就可以打开图形化管理界面

二,VisualSVN创建工程目录  


创建仓库

可以创建很多的仓库,实际开发中一个仓库对应着一个项目

可以在repository右击选中properties(特性),给用户授权.

三..VisualSVN权限控制

创建用户和用户组


创建用户


设置用户访问密码

创建组

创建一个组,将开发人员分组,可以批量的为成员授权.



分配权限

可以在repositories右击选中properties(特性),给用户授权

在给用户修改权限的时候,先移出,在添加



二.客户端-TortoiseSVN安装与使用(重要)

它是一个基于windows系统的svn图形化界面.

1.TortoiseSVN下载

2.TortoiseSVN安装

安装后需要重启电脑.


3.Tortoise SVN常用操作

浏览仓库



正常情况下,在浏览仓库时会要求录入username与password

我们可以清空svn客户端的缓存



Checkout

检出svn服务器上的项目


注意:检出后会有一个.svn隐藏目录

Add:添加到svn服务器管理     

在检出(checkout)的项目文件夹里面创建文件


这样图标的文件代表它没有由svn管理



Add只是加到了SVN管理  ,这个代表的是它要添加到svn服务器

Commit:提交到了仓库中





Update

Update,它是更新操作,可以将svn服务器上的内容更新到本地

更新到历史版本

在实际的开发中,一般开发人员在写完代码的时候,自己测试可以通过,还要项目经理审核才能commet,

更新到历史版本一般是很少使用的

查看当前日志


通过日志信息,右击哪一个版本


也可以通过下面的方式来更新历史版本



Delete(标记删除)  用的不多

标记删除操作,本地文件会删除,我们需要在它的父目录(项目的仓库)进行提交,才能真正从服务器删除

在重构的时候,删除一些无用的类和文件,会用到


导入导出(了解)

Import将本地资源导入到svn服务器

Export导出项目,和checkout的区别,它不存在.svn隐藏文件

三..客户端-Eclipse SVN插件安装与使用(次重要)

1.下载与安装SVN插件

在我们资料中有一个svn插件,交它直接复制到eclipse安装目录下的dropins中

我们怎样可以知道svn插件安装成功



2.Eclipse SVN插件使用

浏览仓库,将eclipse工程导入到svn服务器



在svn资源库研究


怎样将eclipse中的工程导入到svn仓库,可以在工程上右键



完成后,它其实没有真正的导入,需要我们在进行提交才真正导入到svn仓库

Checkout  ,   导出  ,   导入



Add  commit  update更新到历史版本


Eclipse的svn插件解决冲突


产生了冲突

我们在工程上执行更新操作,就可以查看到冲突的文件


解决冲突




三 ..冲突问题与解决(重要)

多个用户同时操作同一个文件时,就可能产生冲突情况。


这个冲突产生后如何解决,我们可以采用手动Merge,解决冲突后,重新commit.


HelloWorld.java它是服务器上的文件与本地文件合并

HelloWorld.java.mine本地修改后的文件

HelloWorld.java.r4修改前的文件

HelloWorld.java.r5对方修改后的文件


进入后,选中代码右击,选择操作,并且点击合并后的代码也能修改   ,修改完成后save ,标记为解决


操作图解

注意:

在添加后只是在本地,需要提交到服务端才是真正的导入了svn仓库.

五.扩展篇

1.svn目录规范

在visualSVN中创建仓库时,可以选择svn目录结构进行创建



Trunk主干目录,此目录下的文件为基准文件

Branches用于开发的分支目录

Tags用于发布的版本目录

假设有一个项目OA,我们完成了1.0版本,这时就可以打一个tags

后续我们在OA项目上添加一个新的模块(及时通讯),我们就可以开一个分支,又有一个公司需要在我们OA基础上添加财务管理模块,我们又可以打一个分支。我们后续针对OA的1.0版本在升级,我们不需要原来附加功能,就可以在原来的主干上继续开发,形成OA2.0版本,开发完成后就可以在打一个tags


2.打一个分支或标记



分支的定义规则:

Project name+日期时间+功能点

Tags的定义规则

Project name+版本号

版本号定义为三段数字编号

xxx.xxx.xxx

第一个:革命性的产品升级版

第二个:新功能版

第三个:修正bug

切换主干,分支与标记



Tags一般是只读,它代表的是发布的版本,所以我们不要进行改变。

[if !supportLists]1. [endif]主干与分支的合并

如果要将主干内容合并到分支上,我们需要在分支的工作副本上操作。

如果要将分支的改变合并到主干上,我们需要在主干的工作副本上操作。

我们的需要是将分支的改变合并到主干上:



注意:在合并时要选择在相应的版本号,合并后,可能会出现冲突,将冲突解决,commit就可以。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,165评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,720评论 1 298
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,849评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,245评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,596评论 3 288
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,747评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,977评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,708评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,448评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,657评论 2 249
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,141评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,493评论 3 258
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,153评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,108评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,890评论 0 198
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,799评论 2 277
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,685评论 2 272

推荐阅读更多精彩内容

  • 为什么要使用SVN? 在程序的编写过程中,每个程序员都会负责开发一个或多个模块,且开发中会生成很多不同的版本, 这...
    shadow雨轩阅读 1,329评论 0 2
  • SVN简介: 为什么要使用SVN? 程序员在编写程序的过程中,每个程序员都会生成很多不同的版本,这就需要程序员有效...
    纪同学说阅读 1,217评论 0 3
  • SVN版本:1.5 及更新版本 名词说明: WC:Working Copy 你的工作区 Versioned:受控的...
    日风和阅读 4,220评论 1 23
  • 前言: 1.本文讲的是SVN版本控制工具常用功能,包括命令行和界面化操作2.如果想了解GIT使用方式,请移步这里 ...
    珍此良辰阅读 17,351评论 10 57
  • 对于宗教信仰问题我一直以来的看法是:信则迷,不信则惘。任何宗教信仰,信到深处都是迷信,迷于宗教的规则理论而看不见其...
    杨大明白阅读 215评论 0 1