您的位置:首页 > 其它

svn学习笔记

2011-08-23 17:04 232 查看
授课笔记是我的授课思路,是一个纲领的文件,细节的东西大家还要看ppt,和给出的书籍.

1. [/b]svn[/b]是什么?[/b]

svn(subversion) 是一款 管理版本的软件 (是一款管理软件项目版本的软件)

2. [/b]svn[/b]为什么会出现[/b]

(1) 问题一

说,你自己希望开发oa软件 1.0->2.0->3.0 ,突然你希望回退1.0

你的解决思路?每个版本备份。

(2) 问题2

说,有三个人,a,b,c 在不同的城市在北京,上海,纽约,希望一起开发一款软件.怎么办?

(3) 问题3

说项目组,a,b,c 三个人.,a-》

(4) 解决之道

scm(software configuration managment)软件配置管理.,是专门研究如何处理软件开发过程中版本的管理问题. 【对项目源码(数据)进行管理技术

常用的scm软件有:

cvs

svn[/b]

vss(微软产品)

clearcase(rational公司)

3. [/b]svn[/b]的基本原理[/b]

svn[/b]工作原理详细图:[/b]

4. [/b]svn[/b]软件的下载和安装[/b]

svn分为客户端软件(tortoisesvn http://tortoisesvn.net/downloads)和服务器端软件(svn 下载 http://subversion.apache.org/packages.html)

?先安装哪一个

(1) 我这里先安装客户端

安装后,我给大家演示如何取得struts2的项目源码.

安装tortoisesvn非常简单,直接next-> ,但是我建议大家,安装到一个比较简单目录下(最好不要有空格,有中文,有怪异字符.),比如我们安装到 d:/svnclientsoftware

(2) 简单体会一下tortoisesvn的使用

需求: 把struts2的项目源码download下.

(3) 如何安装svn的服务器端软件

安装也是很简单,next-> ,但是我建议大家,安装到一个比较简单目录下(最好不要有空格,有中文,有怪异字符.),比如我们安装到 d:/svnserversoftware

(4) 验证svn是否安装ok

在cmd下,输入 svn 看看有无反应

[/b]

5. [/b]svn[/b]的基本使用[/b]

应用场景: 说,有一个项目组,有两个xiaohong(项目经理),xiaoming要求:

a. xiaohong去创建一个仓库

b. 启动svn服务

c. xiaohong先check out一份oa源码

d. xiaohong把我们项目的第一份源码上传到svn服务

e. xiaoming可以把项目源码download自己的机器

(1) 如何创建自己的仓库

在cmd下 : svnadmin create 仓库的路径

说明: 仓库路径就是一个文件夹路径,这里你可以使用相对路径,也可以使用绝对路径

小建议: svnadmin help可以看到这个命令的具体用法

我们把仓库建立到 D:\svnserversoftware\myrepository\oa

具体命令: svnadmin create D:/svnserversoftware/myrepository/oa

(2) 启动我们的svn服务

在cmd下 : svnserve –d –r 仓库路径

说明: -d 表示服务以后台的方式启动. –r 根目录 ,其实就是仓库路径【这里你可以写的绝对路径,也可以是相对路径】

默认情况下: svn服务时监听 3690

你可以使用netstat –an 命令验证.

(3) xiaohong从oa仓库checkout一份源码

注意: 保证svn服务是运行状态.

(4) 把项目源码上传(commit)到仓库去

在默认的情况下,我们的svn仓库,不能让匿名用户commit.

把匿名用户打开.

如果看不到图标变化,可以重新启动桌面 (explor)

(5) xiaoming去从服务器取出一份源码

(6) 做一个小练习

练习要求:自己安装服务器端软件和客户端软件

a. 创建一个仓库d:\myRepository\oa

b. 配置用户名harry sally ,使得他们有操作svn服务器的权限(匿名用户即可)

c. 使用harry向oa仓库提交oa项目源码(模拟),可以建立一些文件夹.和文件

d. 使用sally去checkout 服务器的oa仓库的源码,看看是否能够成功,并比较文件是否相同.

6. [/b]svn[/b]的单仓库和多仓库[/b]

前面我们讲的是单仓库, 多仓库是指: 仓库建立方式与单仓库一样,只是目录仓库结构有所变化,示意图:

单仓库和多仓库最大区别在于,启动svn服务的时候,仓库路径不同

比如: 比如你希望以单仓库方式启动

svnserve –d –r d:/svnserversoftware/myrepository/oa

如果你是以多仓库方式启动

svnserve –d –r d:/svnserversoftware/myrepository

使用,你可以指定去访问某个单仓库,访问oa

看看.

7. tortoisesvn的基本功能介绍

各个图标的含义:

? :表示该文件,还没有受到版本控制.

+ :表示文件受到版本控制,但是还没有提交到仓库

钩钩:表示该文件已经提交到仓库.

!:表示文件在本地修改但是还没提交到仓库

特别注意:如何修改默认的svn 的url

并行修改同一个文件,如何处理[/b]

说,xiaohong ,[/b]和xiaoming[/b]把最新版本下载本地.[/b]

xiaohong: [/b]修改Hello.java (9:00)[/b]

[/b]提交 Hello.java(9:10)[/b]

xiaoming: [/b]修改 Hello.java (9:01)[/b]

[/b]提交 Hello.java (9:20)[/b]

解决冲突的方法:[/b]

① 分工明确,代码没有交集.

② 规定每个人按时,按量,在某个时间段提交.

③ 合并后在提交.(先update,在commit)

④ 放弃(协商.)

小练习:

练习要求:自己安装服务器端软件和客户端软件

创建一个仓库d:\myRepository\oa

svnadmin create d:\myRepository\oa

svnserve –d –r d:\myRepository\oa

配置用户名harry sally ,使得他们有操作svn服务器的权限

使用harry向oa仓库提交oa项目源码(模拟),可以建立一些文件夹.和文件[这里你要先check out,然后提交]

特别说明: 在默认情况下,匿名用户不能提交, 可以到 conf/svnserve.conf去修改

# anon-access = read 改成 anon-access = write 即可 【anon-access = write要顶在前面.】

使用sally去checkout 服务器的oa仓库的源码,看看是否能够成功,并比较文件是否相同

直接使用checkout 即可

8. [/b]svn[/b]用户权限的配置[/b]

我们使用的匿名用户,在实际开发中有问题,现在我们来创建三个用户 admin , xiaohong ,xiaoming

要求: ①admin 和 xiaohong有读写权限

②xiaoming只有读的权限

③其它用户统统不能操作我们的仓库

所有的配置,都在服务器端.,操作步骤:

a. 修改 conf/ svnserve.conf 修改内容:

#表示匿名用户没有任何权限 none|write|read

anon-access = none

#授权用户的最高权限 write

auth-access = write

#用户名和密码在passwd文件中配置

password-db = passwd

#配置各个用户的权限

authz-db = authz

b. 在passwd文件中添加三个用户:

admin = admin

xiaohong = xiaohong

xiaoming = xiaoming

c. 在 authz添加

[groups]

admin = admin,xiaohong

guest = xiaoming

* =

[oa:/] 【oa:/表示对oa子仓库的权限控制 /】

@admin = rw

@guest = r

* =

d.测试.看看是否能够使用.

小练习:[/b]

练习项目版本控制实战

公司分配给CRM项目组一共由3位员工进行开发

1.其中有二名员工具有整个项目的全部可读写权限 另一名员工只有读权限。

2.练习时要求故意造成版本冲突(即并行修改同一文件),最终可自我解决此问题。

9. [/b]把svn[/b]做成一个服务(service)[/b],希望能够自动启动[/b]

在cmd下,输入命令

sc create 服务名 binPath=”svnserve.exe的绝对路径 –r 仓库的绝对路径 --service ”

我们这里就应这样

sc create MYSVN binPath=” D:/svnserversoftware/server/bin/svnserve.exe –r D:/svnserversoftware/myrepository –-service “ start= auto

说明:如果你创建服务没有成功,可以

(1) sc delete MYSVN

(2) 到注册表 下找到MYSVN,删除即可

在删除服务前,一定要停止服务

(1). net stop MYSVN

(2) sc stop MYSVN

10. 使用批处理文件.bat[/b]来管理我们的svn[/b]服务[/b].

我们写一个mysvn-install.bat 文件,该文件可以安装服务,并启动服务.

mysvn-remove.bat文件,该文件可以卸载我们的svn服务

小练习[/b]

要求1:自己创建四个bat文件:

my_exe_intallsvn.bat [[/b]只是安装][/b]

my_exe_startsvn.bat [[/b]只是启动][/b]

my_exe_stopsvn.bat[/b]

my_exe_deletesvn.bat[/b]

要求2:给你的服务添加一个简单的描述,让人一看就知道你的这个服务大致是用来做什么的.

11. [/b]svn[/b]和apache[/b]的整合[/b]

原理示意图:

当apache和svn整合后,我们就不需要启动svn服务,直接使用apache去访问我们的仓库.

步骤如下:

(1) 安装apache

安装比较简单,直接下一步即可 。

(2) 验证是否安装ok
http://localhost:80
(3) 创建用户名和密码文件(到时,密码就是加密的(md5+二次加密)

到apache目录下 /bin/htpasswd.exe 可以创建该文件

给admin, xiaoming,xiaohong加密

passwd.exe –cb passwd.apahce admin admin

passwd.exe –b passwd.apahce xiaoming xiaoming

(4) 把我们生成的密码文件 passwd.apache 拷贝到我们的大仓库下。根据我们的具体情况,就放在 D:\svnserversoftware\myrepository

(5) 下面的步骤比较复杂,我们参考pdf文档

(6) 重启apache即可.

12. eclipse和svn的整合

(1) eclipse默认不支持对 svn的访问,如需要,要安装插件

(2) 把下载好的插件解压

(3) 按照如下步骤安装.

(4) eclipse+svn的具体使用方法

应用场景: 说,有一个项目组,有两个xiaohong(项目经理),xiaoming要求: oa项目

f. xiaohong去创建一个仓库

g. 启动svn服务

h. xiaohong把我们项目的第一份源码上传到svn服务

i. xiaoming可以把项目源码download自己的机器

j. 演示提交文件冲突文件.

并行修改同一个文件,如何处理[/b]

说,xiaohong ,[/b]和xiaoming[/b]把最新版本下载本地.[/b]

xiaohong: [/b]修改Test1.java (9:00)[/b]

[/b]提交 Test1.java(9:10)[/b]

xiaoming: [/b]修改 Test1.java (9:01)[/b]

[/b]提交 Test1.java (9:20)[/b]

解决冲突的方法:[/b]

⑤ 分工明确,代码没有交集.

⑥ 规定每个人按时,按量,在某个时间段提交.

⑦ 合并后在提交.(先update,在commit)

⑧ 放弃(协商.)

课后作业:

(1) 小练习

要求1:自己创建四个bat文件:

my_exe_intallsvn.bat[/b]

my_exe_startsvn.bat[/b]

my_exe_stopsvn.bat[/b]

my_exe_deletesvn.bat[/b]

要求2:给你的服务添加一个简单的描述,让人一看就知道你的这个服务大致是用来做什么的.

(1) 给你的服务添加一个简单的描述,让人一看就知道你的这个服务大致是用来做什么的.

(2) 用户权限管理的练习.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: