svn授课笔记.docx
- 文档编号:3475311
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:17
- 大小:227.26KB
svn授课笔记.docx
《svn授课笔记.docx》由会员分享,可在线阅读,更多相关《svn授课笔记.docx(17页珍藏版)》请在冰豆网上搜索。
svn授课笔记
授课笔记是我的授课思路,是一个纲领的文件,细节的东西大家还要看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(softwareconfigurationmanagment)软件配置管理.,是专门研究如何处理软件开发过程中版本的管理问题.【对项目源码(数据)进行管理技术】
常用的scm软件有:
cvs
svn
vss(微软产品)
clearcase(rational公司)
svn介绍
■subversion(简称svn)是近年来崛起的版本管理软件,是cvs的接班人。
目前,绝大多数开源软件都使用svn作为代码版本管理软件。
■Subversion支持linux和windows,更多是安装在linux下。
■svn服务器有2种运行方式:
独立服务器和借助apache。
svn:
//http:
//
■svn最流行的客户端是tortoisesvn。
3.svn的基本原理
svn工作原理详细图:
:
svn的基本工作思路是这样的:
在一台服务器上建立一个源代码库,库里可以存放许多不同项目的源程序。
由源代码库管理员统一管理这些源程序。
每个用户在使用源代码库之前,首先要把源代码库里的项目文件下载到本地,然后用户可以在本地任意修改,最后用svn命令进行提交,由svn源代码库统一管理修改。
这样,就好像只有一个人在修改文件一样,既避免了冲突,又可以做到跟踪文件变化等。
4.svn软件的下载和安装
svn分为客户端软件(tortoisesvn
和服务器端软件(svn下载http:
//subversion.apache.org/packages.html),下载windos的CollabNet(professionallysupportedandcertifiedbyCollabNet)版本
?
先安装哪一个,视情况而定。
如果你不是服务器管理者,则只需要安装客户端就可以了,如果你是项目经理,则你可能需要安装服务器端。
(1)我这里先安装客户端
安装后,我给大家演示如何取得struts2的项目源码.(这一步的前提是你知道struts2源码所在地址,其次sturts2本身建立了一个供全世界使用的svn服务器)
安装tortoisesvn非常简单,直接next->,但是我建议大家,安装到一个比较简单目录下(最好不要有空格,有中文,有怪异字符.),比如我们安装到d:
/svnclientsoftware
安装完成之后发现右键多了两个选项:
这说明:
它是一个Shell程序,可以把它看做一个插件,直接与windows集成了,没有能够启动它的地方。
(2)简单体会一下tortoisesvn的使用
需求:
把struts2的项目源码download下.
点击Repo(sitory)-browser-->
填入地址后ok-->
(3)如何安装svn的服务器端软件
安装也是很简单,next->,但是我建议大家,安装到一个比较简单目录下(最好不要有空格,有中文,有怪异字符.),比如我们安装到d:
/svnserversoftware
(4)验证svn是否安装ok
在cmd下,输入svn看看有无反应
有反应说明安装成功,之所以有反应是因为在安装后直接将真bin目录写在了环境变量里面了。
5.svn的基本使用
应用场景:
说,有一个项目组,有两个xiaohong(项目经理),xiaoming要求:
a.xiaohong去创建一个仓库
b.启动svn服务
c.xiaohong先checkout一份oa源码
d.xiaohong把我们项目的第一份源码上传到svn服务
e.xiaoming可以把项目源码download自己的机器
(1)如何创建自己的仓库
在cmd下:
svnadmincreate仓库的路径
说明:
仓库路径就是一个文件夹路径,这里你可以使用相对路径,也可以使用绝对路径
小建议:
svnadminhelp可以看到这个命令的具体用法
我们把仓库建立到D:
\svnserversoftware\myrepository\oa
具体命令:
svnadmincreateD:
/svnserversoftware/myrepository/oa
里面的文件夹有:
conf、db、hooks、locks,其中我们主要用的是conf这个文件夹,配置用户。
db放置源码加密后的文件。
里面的文件有:
format、README.txt,其中format中保存了当前的版本。
查看里面只有一个5说明该版本是5
另外,也可以右键创建一个仓库。
(2)启动我们的svn服务
在cmd下:
svnserve–d–r仓库路径
说明:
-d表示服务以后台的方式启动.–r根目录,其实就是仓库路径【这里你可以写的绝对路径,也可以是相对路径】
默认情况下:
svn服务时监听3690
你可以使用netstat–an命令验证.
(3)xiaohong从oa仓库checkout一份源码
注意:
保证svn服务是运行状态.
操作:
右键checkout,由于现在是单仓库,填入地址为:
svn:
//localhost即可。
checkout完成之后,会生成一个.svn的文件,这个文件是隐藏的。
之后就可以建立自己的代码文件:
src、doc、readme.txt、Hello.java
(4)把项目源码上传(commit)到仓库去
右键commit,会弹出上传窗口,注意,这里最好写注释,就是为什么你提交这些代码,写好后提交,但会出现错误:
Commitfailed(detailsfollow):
Authorizationfailed
在默认的情况下,我们的svn仓库,不能让匿名用户commit.
把匿名用户打开.到服务器端找到myrepository\oa\conf\svnserve.conf修改为:
#表示匿名用户的访问权限
anon-access=write
修改的时候要注意:
每行代码都要顶格写,而且=两边有空格,修改后重启服务器。
就可以提交了,发现提交后原来文件夹是带?
的,现在变为√
如果看不到图标变化,可以重新启动桌面(explor)
(5)xiaoming去从服务器取出一份源码
依然是右键checkout
(6)做一个小练习
练习要求:
自己安装服务器端软件和客户端软件
a.创建一个仓库d:
\myRepository\oa
b.配置用户名harrysally,使得他们有操作svn服务器的权限(匿名用户即可)
c.使用harry向oa仓库提交oa项目源码(模拟),可以建立一些文件夹.和文件
d.使用sally去checkout服务器的oa仓库的源码,看看是否能够成功,并比较文件是否相同.
6.svn的单仓库和多仓库
前面我们讲的是单仓库,多仓库是指:
仓库建立方式与单仓库一样,只是目录仓库结构有所变化,示意图:
在myrepository下再建立另外一个文件夹erp,这样就成为多仓库了。
单仓库和多仓库最大区别在于,启动svn服务的时候,仓库路径不同
比如:
比如你希望以单仓库方式启动
svnserve–d–rd:
/svnserversoftware/myrepository/oa
如果你是以多仓库方式启动
svnserve–d–rd:
/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)
小明修改时:
Commitfailed(detailsfollow):
文件“/Hello.java”已经过时
Youhavetoupdateyourworkingcopyfirst.
解决冲突的方法:
1分工明确,代码没有交集.
2规定每个人按时,按量,在某个时间段提交.
3合并后在提交.(先update,在commit)
4放弃(协商.)
◆清理、更新到指定版本(cleanup/updatetoversion)
◆日志记录、提交日志限定必填。
(如果想设定必须填写多少字符的注释:
proerties-->tsvn:
logmnisize为5,则小于5个字符的注释将不能提交)
◆锁定、解锁:
基本权限控制(可以限制被锁定的文件只能由被锁定用户修改提交)
◆误删除恢复操作:
直接重更新或通过日志列表(update下即可)
◆单个文件过滤:
选中文件-->TortoiseSVN---->增加到忽略列表(这样的文件将不提交
操作后这样的文件图标为减号)
◆导出:
使项目脱离版本控制export。
小练习:
练习要求:
自己安装服务器端软件和客户端软件
创建一个仓库d:
\myRepository\oa
svnadmincreated:
\myRepository\oa
svnserve–d–rd:
\myRepository\oa
配置用户名harrysally,使得他们有操作svn服务器的权限
使用harry向oa仓库提交oa项目源码(模拟),可以建立一些文件夹.和文件[这里你要先checkout,然后提交]
特别说明:
在默认情况下,匿名用户不能提交,可以到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.测试.看看是否能够使用.
注意:
如果保存了用户名,再用别的用户的时候还会用原来的用户名,解决办法:
settings-->savedate-->Authenticationdate点击clear即可。
小练习:
练习项目版本控制实战
公司分配给CRM项目组一共由3位员工进行开发
1.其中有二名员工具有整个项目的全部可读写权限另一名员工只有读权限。
2.练习时要求故意造成版本冲突(即并行修改同一文件),最终可自我解决此问题。
9.把svn做成一个服务(service),希望能够自动启动
在cmd下,输入命令
sccreate服务名binPath=”svnserve.exe的绝对路径–r仓库的绝对路径--service”
我们这里就应这样
sccreateMYSVNbinPath=”D:
/svnserversoftware/server/bin/svnserve.exe–rD:
/svnserversoftware/myrepository–-service“start=auto注意:
=左边没有空格,右边有空格
说明:
如果你创建服务没有成功,可以
(1)scdeleteMYSVN
(2)到注册表
下找到MYSVN,删除即可
在删除服务前,一定要停止服务
(1).netstopMYSVN
(2)scstopMYSVN
删除方法:
scdeleteMYSVN
如果删除不了的话,去注册表中删除:
HKEY_LOCAL_MACHINE-->SYSTEM-->CurrentControlSet,找到相应服务将之删除。
10.使用批处理文件.bat来管理我们的svn服务.
我们写一个mysvn-install.bat文件,该文件可以安装服务,并启动服务.
mysvn-remove.bat文件,该文件可以卸载我们的svn服务
小练习
要求1:
自己创建四个bat文件:
my_exe_intallsvn.bat[只是安装]
@echooff
sccreateMYSVNbinPath="D:
/StudySoftware/svnserversoftware/Subversion/bin/svnserve.exe-rD:
/StudySoftware/svnserversoftware/myrepository--service"start=auto
@pause
注:
@echooff表示关闭信息输出,@pause表示让控制台不会一闪而过
my_exe_startsvn.bat[只是启动]
@echooff
netstartMYSVN
#或者scstartMYSVN
@pause
my_exe_stopsvn.bat
@echooff
netstopMYSVN
@pause
my_exe_deletesvn.bat
@echooff
scdeleteMYSVN
@pause
要求2:
给你的服务添加一个简单的描述,让人一看就知道你的这个服务大致是用来做什么的.,如果服务已经建立(注意要确保它没有运行)
scdescriptionMYSVN"ok"
或者可以直接在安装服务的时候就指定描述:
sccreateMYSVNbinPath="D:
/svnserversoftware/bin/svnserve.exe-rD:
/svnserversoftware/myrepository--service"start=auto
scdescriptionMYSVN"ok"
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–cbpasswd.apahceadminadmin
passwd.exe–bpasswd.apahcexiaomingxiaoming
(4)把我们生成的密码文件passwd.apache拷贝到我们的大仓库下。
根据我们的具体情况,就放在D:
\svnserversoftware\myrepository
(5)下面的步骤比较复杂,我们参考pdf文档
1、
打开Apache安装目录下Apache2.2\conf\httpd.conf配置文件,将下列2行
前方的#移除(第83行):
LoadModuledav_modulemodules/mod_dav.so
LoadModuledav_fs_modulemodules/mod_dav_fs.so
2、
找到Subversion安装目录下的以下文件,复制到Apache安装目录下modules
目录中。
bin/mod_authz_svn.so
bin/mod_dav_svn.so
3、
并在上面被先移除注释(#)的两行下面增加以下两行:
LoadModuledav_svn_modulemodules/mod_dav_svn.so
LoadModuleauthz_svn_modulemodules/mod_authz_svn.so
4、
在apache安装目录下的conf\httpd.conf文件的最后面加入:
#配置虚拟目录#
#引用远程访问模块
DAVsvn
#项目版本库路径#
SVNPathD:
/StudySoftware/svnserversoftware/myrepository/oa
#授权文件#
AuthzSVNAccessFileD:
/StudySoftware/svnserversoftware/myrepository/oa/conf/authz
#所有用户都需要身份验证#
SatisfyAny
Requirevalid-user
#验证方式#
AuthTypeBasic
#项目的名称#
AuthName"oa"
#用户文件#
AuthUserFileD:
/StudySoftware/svnserversoftware/myrepository/passwd.apache
需要修改的地方用红色显示。
(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.演示提交文件冲突文件.
1、window-->ShowView-->other-->SVN-->SVNRepositories
2、打开该视图之后-->new-->。
。
。
3、新建立一个项目,写好代码后,点Team-->shareProject.-->SVN-->createanewrepositorylocation-->url-->useprojectnameasfoladername
4、操作成功之后,之后的修改,提交等与SVN类似
13、cvs的使用
1、安装
2、在F盘下建立一个文件夹:
mycvs/drp
3、启动SVCNT-->Repositoryconfiguration-->add-->选择刚才的文件夹
4、用eclipse访问它
5、eam-->shareProject.-->CVS-->createanewrepositorylocation,注意参数填写:
Host:
localhost、Repositorypath:
/test/mycvs/drp、User与password是操作系统的用户名和密码
5、需要注意的一点是,回退到某个版本与CVS不同,它需要打一个Tag
步骤:
Tagasvisition,每一次提交的话,打一个Tag
想回到某个版本,点Switch
并行修改同一个文件,如何处理
说,xiaohong,和xiaoming把最新版本下载本地.
xiaohong:
修改Test1.java(9:
00)
提交Test1.java(9:
10)
xiaoming:
修改Test1.java(9:
01)
提交Test1.java(9:
20)
解决冲突的方法:
5分工明确,代码没有交集.
6规定每个人按时,按量,在某个时间段提交.
7合并后在提交.(先update,在commit)
8放弃(协商.)
课后作业:
(1)小练习
要求1:
自己创建四个bat文件:
my_exe_intallsvn.bat
my_exe_startsvn.bat
my_exe_stopsvn.bat
my_exe_deletesvn.bat
要求2:
给你的服务添加一个简单的描述,让人一看就知道你的这个服务大致是用来做什么的.
(1)给你的服务添加一个简单的描述,让人一看就知道你的这个服务大致是用来做什么的.
(2)用户权限管理的练习.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- svn 授课 笔记