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(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.       xiaohongcheck 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)    xiaohongoa仓库checkout一份源码

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

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

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

把匿名用户打开.

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

 

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

(6)    做一个小练习

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

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

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

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

d.       使用sallycheckout 服务器的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服务器的权限

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

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

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

使用sallycheckout 服务器的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.   svnapache的整合

原理示意图:

apachesvn整合后,我们就不需要启动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.   eclipsesvn的整合

(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)    用户权限管理的练习.

 

 

 

 

 

posted @ 2011-08-23 17:04  浪漫满屋  阅读(1100)  评论(1编辑  收藏  举报