授课笔记是我的授课思路,是一个纲领的文件,细节的东西大家还要看ppt,和给出的书籍.
1. svn是什么?
svn(subversion) 是一款 管理版本的软件 (是一款管理软件项目版本的软件)
2. svn为什么会出现
(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
vss(微软产品)
clearcase(rational公司)
3. svn的基本原理
svn工作原理详细图:
4. svn软件的下载和安装
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 看看有无反应
5. svn的基本使用
应用场景: 说,有一个项目组,有两个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. svn的单仓库和多仓库
前面我们讲的是单仓库, 多仓库是指: 仓库建立方式与单仓库一样,只是目录仓库结构有所变化,示意图:
单仓库和多仓库最大区别在于,启动svn服务的时候,仓库路径不同
比如: 比如你希望以单仓库方式启动
svnserve –d –r d:/svnserversoftware/myrepository/oa
如果你是以多仓库方式启动
svnserve –d –r d:/svnserversoftware/myrepository
使用,你可以指定去访问某个单仓库,访问oa
看看.
7. tortoisesvn的基本功能介绍
各个图标的含义:
? :表示该文件,还没有受到版本控制.
+ :表示文件受到版本控制,但是还没有提交到仓库
钩钩:表示该文件已经提交到仓库.
!:表示文件在本地修改但是还没提交到仓库
特别注意:如何修改默认的svn 的url
并行修改同一个文件,如何处理
说,xiaohong ,和xiaoming把最新版本下载本地.
xiaohong: 修改Hello.java (9:00)
提交 Hello.java(9:10)
xiaoming: 修改 Hello.java (9:01)
提交 Hello.java (9:20)
解决冲突的方法:
① 分工明确,代码没有交集.
② 规定每个人按时,按量,在某个时间段提交.
③ 合并后在提交.(先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. svn用户权限的配置
我们使用的匿名用户,在实际开发中有问题,现在我们来创建三个用户 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.测试.看看是否能够使用.
小练习:
练习项目版本控制实战
公司分配给CRM项目组一共由3位员工进行开发
1.其中有二名员工具有整个项目的全部可读写权限 另一名员工只有读权限。
2.练习时要求故意造成版本冲突(即并行修改同一文件),最终可自我解决此问题。
9. 把svn做成一个服务(service),希望能够自动启动
在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来管理我们的svn服务.
我们写一个mysvn-install.bat 文件,该文件可以安装服务,并启动服务.
mysvn-remove.bat文件,该文件可以卸载我们的svn服务
小练习
要求1:自己创建四个bat文件:
my_exe_intallsvn.bat [只是安装]
my_exe_startsvn.bat [只是启动]
my_exe_stopsvn.bat
my_exe_deletesvn.bat
要求2:给你的服务添加一个简单的描述,让人一看就知道你的这个服务大致是用来做什么的.
11. svn和apache的整合
原理示意图:
当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. 演示提交文件冲突文件.
并行修改同一个文件,如何处理
说,xiaohong ,和xiaoming把最新版本下载本地.
xiaohong: 修改Test1.java (9:00)
提交 Test1.java(9:10)
xiaoming: 修改 Test1.java (9:01)
提交 Test1.java (9:20)
解决冲突的方法:
⑤ 分工明确,代码没有交集.
⑥ 规定每个人按时,按量,在某个时间段提交.
⑦ 合并后在提交.(先update,在commit)
⑧ 放弃(协商.)
课后作业:
(1) 小练习
要求1:自己创建四个bat文件:
my_exe_intallsvn.bat
my_exe_startsvn.bat
my_exe_stopsvn.bat
my_exe_deletesvn.bat
要求2:给你的服务添加一个简单的描述,让人一看就知道你的这个服务大致是用来做什么的.
(1) 给你的服务添加一个简单的描述,让人一看就知道你的这个服务大致是用来做什么的.
(2) 用户权限管理的练习.