admin 管理员组文章数量: 887021
2023年12月21日发(作者:00001111二进制转换十进制)
SVN服务器建立/使用手册
SVN服务器建立/服务器建立/使用手册使用手册
手册
周宇辉
周宇辉
2008-2008-07-07-041/26
SVN服务器建立/使用手册
目录
1. SVN介绍..........................................................3
1.1
版本控制........................................................3
1.1
3
1.2
相关概念........................................................5
2. SVN服务器的建立..................................................7
2.1基于SVN协议的服务端.............................................7
2.2基于HTTP协议的服务端............................................8
2.3
SVN密码管理....................................................9
2.4
SVN权限管理(实例).............................................10
2.5
服务器端监视...................................................12
3. 客户端的使用.....................................................14
3.1
3.1.1 工作目录...................................................3.1.2 与BeyondCompare集成.......................................3.1.3 提交修改...................................................3.2
3.2.1 安装.......................................................3.2.2 取得工程...................................................3.2.3 提交成果 (Commit)..........................................3.2.4 查看历史...................................................3.2.5 获取特定版本...............................................3.2.6上传新文件.................................................14
16
16
17
18
18
20
23
24
24
25
4. 注意事项.........................................................26
2/26
SVN服务器建立/使用手册
1. SVN介绍
介绍
1.1
版本控制
简单的讲,版本控制可以让你:
• 在开发过程中保存产品的中间结果
• 获取你之前所保存的任一中间结果
• 并对一个阶段的产品进行打包(Label, Tag)
• 对任两个中间结果进行比较
客户端
图1-1 版本控制
版本控制是管理信息修改的艺术,它一直是程序员最重要的工具,程序员经常会花时间做出小的修改,然后又在某一天取消了这些修改,想象一下一个开发者并行工作的团队 - 或许是同时工作在同一个文件!- 你就会明白为什么一个好的系统需要管理潜在的混乱。
1.1 SVN
SVN
SVN全名Subversion,即版本控制系统。
SVN是一个跨平台的软件,支持大多数常见的操作系统。作为一个开源的版本控制系统,Subversion管理随时间改变的数据。 这些数据放置在一个中央资料档案库 (repository) 中。 这个档案库很像一个普通的文件服务器, 不过它会记住每一次文件的变动。这样你就可以把文件恢复到旧的版本, 或是浏览文件的变动历史。Subversion是一个通用的系统, 可用来管理任何类型的文件, 其中包括了程序源码。
传统的版本控制工具采用 Lock – Modify – Unlock方式(如图1-2),例如VSS。
在这种方式下,一旦用户修改文件,该文件处于锁定状态,此时不允许其他用户修改。也即一个文件当前仅允许一个用户拥有写权限。
3/26
SVN服务器建立/使用手册
比较常见的Lock是采用文件只读非只读实现的。
图1-2 Lock-Modify-Unlock
SVN则采用Copy-Modify-Merge方式(如图1-3),这种方式的好处可以允许多个用户同时修改相同的文件。
一个用户在对已修改的文件进行上传时,如果此时服务器上的版本比该文件基于的版本要新,则会产生冲突,不允许该用户上传。
该用户必须获取服务器上的新版本,与本地的修改进行合并(Merge),然后进行上传。
图1-3 Copy-Modify-Merge
4/26
SVN服务器建立/使用手册
图1-4是SVN的架构图,从图中可以看出,SVN的客户端可以采用三种不同的资源库访问方式:http,svn,local。SVN的资源库类型有两种。
图1-4 SVN架构
1.2
相关概念
Tags
Tags
Tag是项目在某一时间的快照 (snapshot) 。对于SVN来讲,每一次资源库的修订都是一次快照。
Tag可以用来建立milestone。Tag仅仅是项目某一时刻的标记,与工作空间,分支等没有任何关系。
SVN中的tag允许自定义名称,这样就可以方便的根据tag名称获取项目某一时刻的版本。
Trunk /
Trunk / B /
Branch
ranch
Trunk是项目工作的主干道,也可以理解为项目开发的原始路线、主开发进程。如果没有特殊的需求,项目会一直在trunk中进行。
在某个时刻,可能需要创建工作文档的第二个拷贝,然后单独维护这个拷贝。这就有了branch的概念,一个与其他开发进程独立的开发进程。
以上如图1-5所示,在主干道上可以创建多个branch。
5/26
SVN服务器建立/使用手册
【注意】注意】
※ trunk以及branch只是两个概念,在SVN中并没有实实在在的两个东西,如果你愿意的话,trunk也可以是branch,branch也可以是trunk。两种从实质上讲并没有什么区别,可以认为是两个不同的工作空间。
※ 虽然只是概念,但是在开发的时候尤其注意不要弄混当前的工作空间,防止发生不必要的损失。推荐为项目创建trunk,branch两个目录。
图1-5 trunk、branch
如图1-6,创建一个branch。
图1-6 创建一个branch
创建Branch后,工作的revision的变化,如图1-7。
图1-7 版本号的变化
※ SVN对于tag以及branch的创建不是easy copy的方式,所以不用担心空间的损耗等。
※ SVN的版本号 (revision) 对于整个SVN来讲是递增的.
6/26
SVN服务器建立/使用手册
2. SVN服务器的建立服务器的建立
安装环境:Window XP professional
软件:服务端软件 /
Subversion有三种运行方式,一种是基于Apache Http Server,一种是Subversion Standalone Server,还有一种local方式。
下面分别介绍svn、http两种方式的安装方法。
协议的服务端
2.1基于svn协议的服务端
【1】安装Subversion后,使用命令 svnadmin create "D:MySVN" 创建svn资源库,资源库地址为D:MySVN
【2】打开 D:,去掉以下内容之前的注释符
[general]
anon-access = none
auth-access = write
password-db = passwd
realm = My First Repository
说明: anon-access = none 不允许匿名访问!
auth-access = write 允许提交修改
password-db = passwd 密码文件名字
如果[general]
anon-access = read → anon-access = none
【3】用记事本打开D:MySVNconfpasswd,添加用户名(user)和密码(passwd)
[users]
user=password
可以添加多个这样的用户名密码对。
【4】创建svn服务,并启动,这样svn就会开机自动启动
在控制台下,输入如下命令:
sc create svnservice binpath= ""D:program
" --service –r D:MySVN" displayname=
SVNService" depend= Tcpip
7/26
SVN服务器建立/使用手册
注意注意:注意:
a. 如果路径中包括空格,一定要用“”处理“"”号,
例如在c:program filessubversion中,则命令应该写为binpath= "c:program "
b. sc对选项的格式还有要求,所有的“=”前不能有空格,而后面必须有空格。例如depend= Tcpip不能写为depend = Tcpip或depend=Tcpip
【5】经过上述四步的操作,就可以使用svn://localhost访问SVN服务器。
2.2基于http协议的服务端
基于Apache Http Server的Subversion,有以下好处:
• 能使用WebDAV协议
• 能使用浏览器作为客户端工具浏览源码仓库。
• 可以很容易的支持SSPI(Windows域认证)和LDAP,这些都是Apache本身就支持的。
• 能得到比较完善的Apache安全认证系统,比如SSL加密连接。
目前SVN1.4.6(当前最新版)暂不支持Apache2.2以上版本,请使用Apache2.0版本进行配置。如果先安装Apache2.0,然后在安装Subversion1.4.6,则Subversion的安装会提示是否配置Apache服务器,选择允许配置。则以下Apache的配置步骤可以省略。
【1】安装Apache服务器
【2】检查Apache的modules目录是否包含mod_dav_以及mod_authz_,如果没有,从Subversion的bin目录中拷贝这两个文件到modules目录。如果先安装Apache,然后安装Subversion,则会自动拷贝这两个模块。
【3】在Apache的配置文件中LoadModule位置的最后添加如下两行:
LoadModule dav_svn_module modules/mod_dav_
LoadModule authz_svn_module modules/mod_authz_
并且去掉LoadModule dav_module modules/mod_之前的#号
8/26
SVN服务器建立/使用手册
【4】如果不执行第2步的拷贝,那么在第3步新添加的两个LoadModule中使用绝对路径
【5】在配置文件的最后添加以下参数:
DAV svn
SVNPath D:MySVN
AuthType Basic
AuthName "Subversion repositories"
AuthUserFile D:MySVNconfpasswd
AuthzSVNAccessFile D:MySVNconfauthz
Require valid-user
其中:
•
• SVNPath D:MySVN 指定svn仓库的物理位置
• AuthUserFile D:MySVNconfpasswd 指定svn仓库的密码文件
• AuthzSVNAccessFile D:MySVNconfauthz 指定svn仓库的权限设置文件
【6】重启Apache服务器,然后就可以使用localhost:8080/svn访问svn仓库。其中8080是Apace服务器设置的端口.
2.3 SVN密码管理
SVN使用svn协议以及http协议的密码处理是有所不同的,svn使用明文,http则可以可以使用md5加密,对应于conf/passwd文件,两者的形式也不同。
基于svn协议的passwd文件:
[users]
Larry = larry
在conf/passwd文件中增加用户名和密码对就可以。
基于http协议的passwd文件(缺少[users]头,用户名和密码的分隔为分号):
larry1:$$46q2xMws37UiwyL1w8MkN
* 可以通过手动编辑的方式增加用户名和密码(可以是明文)
9/26
SVN服务器建立/使用手册
* 使用Apache的htpasswd工具创建用户
创建第一个用户 htpasswd -cm d:Mysvnconfpasswd user1
回车后会要求输入密码
创建第二个用户 htpasswd -m d:Mysvnconfpasswd user1
2.4 SVN权限管理(实例)
厦门央瞬公司是一家电子元器件设备供应商,其中有个ARM部门,专门负责ARM芯片的方案设计、销售,并在北京、上海各设立了一个办事处。对于工作日志,原先采用邮件方式发给经理,但是这种方式有个缺点,那就是不具备连续性,要看以前的日志必须一封一封邮件去查看,很麻烦。
于是就想到利用Subversion, 让员工在自己电脑上编辑日志,然后利用svn传送回来,既方便员工自己编写日志,又方便对日志的归档处理,而且提交日志的时候只需要执行一下 svn commit 即可,比发送邮件还要简单的多。
部门文档的目录结构如下
部门文档的目录结构如下
test 部门名称
├─diary 工作日志目录
│ ├─headquarters 总部工作日志目录
│ ├─beijing 北京办日志目录
│ └─shanghai 上海办日志目录
├─ref 公司公共文件参考目录
└─temp 临时文件目录
人员情况
- morson,公司总经理,不习惯使用电脑,更喜欢传统的纸与笔,以及面对面的交流
- michael,arm事业部的部门经理,没事的时候喜欢弄点儿新技术,用svn来管理日志,就是他想出来的主意
- scofield,北京办人员,老员工,为人油滑难管
- lincon,上海办人员,老员工,大老实人一个
- linda,总部协调员、秘书,文笔不错,长得也不错
- rory,单片机技术员,技术支持
访问权限需求分析
访问权限需求分析
10/26
SVN服务器建立/使用手册
- 允许总经理、部门经理读取所有文件。顺便给他们开放写权限,以便体现对他们职位的尊重,虽然对于某些文件来说,他们若拥有“写”权限其实也没什么用处
- 除部门经理外,所有其他人员,均只能看到本办事处人员工作日志
- 不允许匿名访问
- ref目录只允许经理和秘书读写,对其他人只读
- temp目录人人都可以随意读写
在服务器端d:svndatatestconf配置
[general]
password-db =
anon-access = none
auth-access = write
authz-db =
在服务器端d:svndatatestconf配置进行用户创建
[users]
morson = ShowMeTheMoney
michael = mysecretpassword
scofield = hellolittilekiller
lincon = asyouknows111
rory = 8809117
linda = IlikeWorldCup2006
在服务器端d:svndatatestconf配置进行用户创建
注意:注意:在权限设置中,在权限设置中,用户名必须顶格,用户名必须顶格,不能留有空格!不能留有空格!
[groups]
g_vip = morson
g_manager = michael
g_beijing = scofield
g_shanghai = lincon
g_headquarters = rory, linda
g_docs = linda
[/]
@g_manager = rw
* = r
11/26
SVN服务器建立/使用手册
[/diary/headquarters]
@g_manager = rw
@g_headquarters = rw
@g_vip = r
* =
[/diary/beijing]
@g_manager = rw
@g_beijing = rw
@g_vip = r
* =
[/diary/shanghai]
@g_manager = rw
@g_shanghai = rw
@g_vip = r
* =
[/ref]
@g_manager = rw
@g_docs = rw
* = r
[/temp]
* = rw
这样SVN的配置权限设置完毕。
2.5
服务器端监视
Subversion是通过Hooks 来控制每次Transaction的行为,有Pre-Commit,
Post-Commit 等。一般情况下我们希望在提交代码后,Subversion可以自动发送邮件给组里的每个成员, 这种情况下可以通过post-commit这个脚本来完成。
该脚本存放在资源库(Repository)的Hooks目录下,以.tmpl后缀结尾,在Windows平台改成.bat,.cmd或.exe。(根据测试,bat,cmd不太好用)
12/26
SVN服务器建立/使用手册
图2-1 资源库脚本
当一个Transaction成功完成后,会调用,并传递如下两个参数,根据这两个参数调用svnlook (Subversion提供的工具) 可以获取相应的信息。
set REPOS=%1
set REPOS=%1
set REV=%2 set REV=%2
13/26
SVN服务器建立/使用手册
3. 客户端的使用
3.1 TortoiseSVN
客户端软件 TortoiseSVN,提供了使用图形界面以及和windows系统菜单的集成。/
图3-1 TortoiseSVN初始菜单
SVN Checkout :在本地建立工作目录,与数据仓库的文件建立关联
Repo-browser:浏览指定地址的数据仓库
Export:从数据仓库中导出数据
Create repository here:在本地创建一个数据仓库
Import:把当前目录的导入到数据仓库
•
•
•
•
•
14/26
SVN服务器建立/使用手册
•
•
•
•
•
•
•
•
图3-2 TortoiseSVN菜单
SVN Update:获取最新数据,不会覆盖本地已经修改的文件
SVN Commit:提交数据,如果点击右键的位置是文件或文件夹,则提交相应的内容,如果点击的是文件夹内部的空白处,是提交当前文件夹的内容
Show log:显示当前文件或文件夹的log信息
Check for modifications:检查当前文件或文件夹的修改信息
Revert:取消本次修改
Branch/tag:进行Branch或tag的设置
Add:向资源库添加文件
Relocate:重定向当前工作目录与数据仓库的关联
15/26
SVN服务器建立/使用手册
3.1.1 工作目录
图3-3 SVN工作目录图标
该文件的状态是正常的,但不一定和服务器上的最新版本相同
一般该文件被编辑,就会出现感叹号在更新时有冲突发生的时候出现的图标
该文件设置了svn:needs-lock,直到你获取锁之前,它都是read only的
该文件被锁定
文件或文件夹计划从资源库中删除;或版本控制下的文件在文件夹中缺失。
该文件被添加至数据仓库,但必须commit才可以生效。
3.1.2 与BeyondCompare集成
进入Settings的对话框,在外部程序下可以设置其与外部工具的集成。
16/26
SVN服务器建立/使用手册
图3-4 与BeyondCompare集成
3.1.3 提交修改
在做了修改之后,可以点击SVN Commit菜单对修改的文件或文件夹进行上传。
图3-5 SVN Commit菜单
点击SVN Commit 之后,就会弹出一个输入 log 的对话框:
17/26
SVN服务器建立/使用手册
图3-6 log窗口
输入log后,点击 OK,svn客户端就会向远程服务器提交修改:
图3-7 上传窗口
3.2 Subclipse
3.2.1 安装
使用subclipse作为svn的客户端
/servlets/ProjectDocumentList?folderID=2240&expandFolder=2240&folderID=0
把相应的features以及plugins文件放到Eclipse相应的目录下,然后执行文件,启动Eclipse即可。
文件:
18/26
SVN服务器建立/使用手册
-clean
打开Windows → Preferences,在Team节点中会出现SVN这个子结点。
图3-8 SVN配置窗口
打开Windows → Show View → Others,在SVN节点中,打开SVN资源库视图。
图3-9 SVN资源库窗口
点击可以添加SVN资源库(数据仓库),在URL中输入地址即可。或者点击右键出现如下图的“资源库位置”菜单。
19/26
SVN服务器建立/使用手册
图3-10 资源库位置菜单
图3-11 资源库URL
图3-12 资源库显示
3.2.2 取得工程
取得工程,开发的第一步。
在SVN资源库中选择工程,点击右键出现如下图的菜单。
其中“检出为”就是check out,可以理解为从服务器获取文件并与本地的某一工作目录关联起来。
20/26
SVN服务器建立/使用手册
图3-13 check out菜单
然后出现如下图的对话框,可以指定获取文件的特定版本。
图3-14 SVN检出窗口
21/26
SVN服务器建立/使用手册
图3-15 工作空间选择
点击Finish按钮,则会从服务器获取指定版本的文件,然后在指定的目录会出现如下的现象,这表示该文件夹已与服务器进行了关联。
图3-16 工作目录状况
在Eclipse的包浏览器中的节点中会出现相应的图标,对应于每个文件也会出现版本号,以及修改日期和相关者。
22/26
SVN服务器建立/使用手册
图3-17 Eclipse中工程显示
3.2.3 提交成果提交成果 (Commit)
只要某个文件进行了变动,该文件在树节点中的图标就会发生变化,提示你该文件有变动。
图3-18 变动的图标显示
在确认无误后,可以提交劳动成果。在提交之前,需要与服务器的最新版本进行比较确认修改点(一般情况如此)。
•
•
•
•
图3-19 比较菜单
基本修订版:与你文件所基于的版本进行比较
基本修订版资源库中的最新内容:与服务器上的最新版本进行比较
资源库中的最新内容修订版:与某历史版本进行比较
修订版Local History:与本地的文件进行比较
Local History
然后点击Team→Team→提交,来提交(Commit)你的工作成果。
提交图3-20 提交菜单
在弹出的对话框中添加注释添加注释,添加注释,然后确认需要提交的文件,点击OK进行提交。
23/26
SVN服务器建立/使用手册
图3-21 提交窗口
3.2.4 查看历史
点击Team→Team→显示资源历史记录查看文件或者文件夹的历史记录。
显示资源历史记录图3-22 历史记录菜单
图3-23 历史记录窗口
3.2.5 获取特定版本获取特定版本
打开要获取特定版本的文件的历史记录,然后在某一记录上点击右键可以看到许多功能菜单。
24/26
SVN服务器建立/使用手册
图3-24 功能菜单
• 获取内容:会覆盖当前的文件,此时如果提交文件,则会成功 获取内容• 获取修订版:也会覆盖当前文件,但此时提交,则会发生失败。
获取修订版
3.2.6上传新文件
点击Team→Team→添加至版本控制,把新文件添加到服务器。 添加至版本控制图3-25 添加菜单
此时,被添加的文件的图标就会变成:
图3-26 以添加版本控制图标显示
然后再执行提交动作提交动作就可以把文件上传到服务器。
提交动作25/26
SVN服务器建立/使用手册
4. 注意事项
• 首先取得服务器上的最新产品
• 确保所要提交产品的正确性(文档被确认过,代码通过编译,工作目录的正确等)
• 与服务器上的最新版本使用工具进行比较(例如BeyondCompare)
• 添加注释(最好用英文,当然给日本做外包用日文他们也比较欢迎)
• 如果不确定,最好实施Pair check in
• Subclipse提供了资源同步功能,在commit之前可以利用该功能确认本地工作目录与服务器的差别。
• 非服务器管理员不允许随意在服务器上建立或删除文件、文件夹。
• 一般推荐本地只保持一个工作目录。
※ 更多的关于SVN服务器以及客户端的使用可以通过网络搜索获取。
26/26
版权声明:本文标题:SVN_使用手册 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1703159939h440407.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论