目录
一、版本管理基础
1.版本控制介绍
2.常用软件
二、Subversion基础
1.发展历史
2.特性
3.安装
4.组成
5.配置
三、基本操作
1.检出Check Out
2.提交Commit
3.解决冲突
4.标签Tag
四、分支与合并
1.版本库的概念
2.什么是分支?
3.使用分支
五、进阶
1.以后台服务方式启动
2.从CVS转换到SVN
六、附录
A. 参考资源
B. 相关资源
一、版本管理基础
1. 版本控制介绍
在多人协作开发软件的时候,经常出现员工A的代码被员工B覆盖,或者今天做了小修改明天却发现需要把代码改回去,版本控制正是为此而诞生的,它是软件开发团队高效协作的重要管理工具。
简单来说,版本控制服务器是一个特殊的文件服务器,不仅控制用户对文件的读取、写入等操作,更记录了每一次修改的内容。
2. 常用软件
A. Microsoft Visual SourceSafe,2005新特征
- 通过 HTTP 进行远程 Web 访问
- 增强的性能和可伸缩性
- 增加的容量,数据存储增至 4 GB
- 区域性时区和语言
B. CVS,开源的
C. Clearcase,IBM开发的企业级管理软件
D. 其它的还有PVCS、MKS和企业级的CCC Harvest
二、Subversion基础
1. 发展历史
Subversion是在CVS基础发展而来的,2000年的时候,CollabNet公司的协作软件采用CVS作为版本控制系统,因为CVS本身一些局限性,从而需要一个代替品,然后邀请了Karl Fogel(Open Source Development with CVS)参与开发,14个月后,2001年8月31日,新的版本管理系统Subversion诞生,开始不再用CVS进行版本管理,而使用自己管理自己了。
2. 特性
-
目录版本化
CVS只能管理单个文件的更改,而Subversion可以跟踪到目录树的变更
-
真实的版本历史
CVS无法实现文件移动改名操作,所以但一个文件搬到另一个地方或者改名,版本号将重新编,而Subversion可以实现移动、改名等操作
-
原子提交
将一系列文件的修改组成一个逻辑整体,以后可以一次性还原
-
版本号元数据
Subversion不仅能管理文件内容,也能管理文件和目录属性(meta-data)
-
可选的网络层
Subversion可以作为扩展模块嵌入Apache,自身还实现了一个轻型独立的服务器软件
-
一致的数据操作
Subversion用了二进制差异算法描述文件的变化,所以对于文本文件和二进制文件,操作方法是一样的
-
高效的分支和标签操作
Subversion使用一种类似硬链接(Unix名词)的机制拷贝整个工程来对分支和标签进行操作,消耗的时间跟修改部分成正比,而不是整个文件的大小,因此这些操作的开销很小,花费时间很少
-
可扩展性
Subversion由一系列结构化的模块组成,具有定义良好的API,使得和其它语言互动操作性很强,而且非常方便维护
-
可以选择数据库和纯文件的版本库实现
版本库可以使用嵌入的数据库((DBD,Berkeley database),也可以使用定义格式的纯文件(FSFS,Native filesystem)
-
对象链接的版本化
Unix用户可以在版本控制里置入对象链接,这个链接会在Unix的工作拷贝里重建,但不会在win32工作拷贝里创建。
-
可解析的输出
Subversion所有的命令行客户端输出的内容都经过精心的设计,适合人们读取和自动解析;脚本化也具备较高的优先级。
-
本地化信息
Subversion会根据本地设置使用gettext()来显示传输错误、报告和帮助信息。
3. 安装
Subversion建立在APR(Apache Portable Runtime library)可移植层上,APR是独立运行的库,所以Subversion可以运行在所有运行Apache的服务器平台上(Windows、Lunix、BSD、MacOSX、Netware……等等)。
Subversion官网提供了各种操作系统的相应版本,可以从以下地址获得最新版本,目前最新是1.4.4,http://subversion.tigris.org/project_packages.html
针对Windows系统,提供了GUI界面的安装包,安装时只需一路Next下去即可
这里使用的SVN客户端是TortoiseSVN-1.4.4,将SVN完全整合到资源浏览器,使用非常方便,而且是完全免费的,从官方下载 http://tortoisesvn.net/
注意有32位和64位不同版本,官方网站同时提供了各种语言版下载,其中包括可爱的简体中文。
安装过程也非常简单,一路Next下去就可,安装后会提示重启电脑,重启只是为了在资源管理器显示特有图标,不重启也是可以正常使用的。
4. 组成
-
Svn
命令行客户端。
-
Svnversion
报告工作拷贝状态(当前修订版本的项目)的工具。
-
Svnlook
检查版本库的工具。
-
Svnadmin
建立、调整和修补版本库的工具。
-
Svndumpfilter
过滤Subversion版本库转储文件的工具。
-
mod_dav_svn
Apache HTTP服务器的一个插件,可以让版本库在网络上可见。
-
svnserve
一种单独运行的服务器,可以作为守护进程由SSH调用,另一种让版本库在网络上可见的方式。
5. 配置
1) 建立版本库(Repository)
在CMD命令行模式下,运行
svnadmin create f:svntest
即可在 F:svn目录下建立一个名称为test的版本库
也可以使用TortoiseSVN图形化的完成这一步:
在目录F:svn下新建一文件夹test,然后右击test,选TortoiseSVN >> Create Repository here..., 然后可以选择版本库模式, 这里使用默认即可, 然后就创建了一系列目录和文件。
运行命令行之前Test目录必须是空的或者尚未有此目录。
不推荐把版本库创建在网络共享上,如果非要这样做,请使用FSFS格式,而不要用BDB格式!
2) 配置用户和权限
用记事本打开新建的testconf目录下面的svnserve.conf
# password-db = passwd
去掉前面# 号,即改为
password-db = passwd
表示用密码文件进行权限管理,对应文件名为同目录下的passwd文件
保存,接着再用记事本打开同目录下面passwd文件
# harry = harryssecret
# sally = sallyssecret
同样去掉#号,改为
harry = harryssecret
sally = sallyssecret
这里表示2个用户,其中harry表示登录用户名,harryssecret表示密码,你可以自己修改
在svnserve.conf文件打开# auth-access = write表示匿名用户可写数据,这不推荐!
3) 运行独立服务器
在命令行窗口输入
svnserve -d -r f:svn
4) 初始化导入
在要引入的工程文件夹右击,选TortoiseSVN >> Import...
URL of repository输入“svn://localhost/test”,点【OK】之后会提示输入用户名密码,按照前面设置的输入即可,如果没报错,就可以看到文件哗啦哗啦的导进版本库了。
注意这里是在本机操作,所以地址输入svn://localhost/test,如果是远程提交的话,要换成相应IP地址,例如svn://222.111.26.26/test
三、基本操作
1. 检出 Check Out
在开始干活前,你必须得到一个最新的工作副本,在资源管理器右击空白处,选 TortoiseSVN >> checkout
输入目录名后点OK,如果输入的目录名是不存在的,程序会自动创建。
2. 提交 Commit
当完成一个或若干个文件的修改后,选中要提交的文件或文件夹,右击选 TortoiseSVN >> Commit
输入备注信息后点OK就可以了,为了方便日后查看,备注信息请尽量写详细。
有时不清楚具体修改了哪些文件,或者新增了哪些文件,又或者要提交的文件太多了,可以直接右击文件夹进行提交,TortoiseSVN将把需要提交的文件清单列出来,进行选择后再提交即可
3. 解决冲突
4. 标签 Tag
四、分支与合并
1. 版本库的概念
Subversion没有项目的概念,只有版本库。
版本库记录了每一次修改内容,通过版本库,可以很方便的回朔到某个以前的版本,可以很容易的查看上月某天的某人改了什么东西。
版本号初始值为0,每次成功提交后递增1,Subversion的版本号是针对整个目录树的,而不是单个文件
2. 什么是分支?
例如重庆上的算命网站代码,加入了SVN版本管理,现在新疆也要上算命业务,页面代码上基本是相同的,只有在某些接口存在差异,这时就需要新建一个分支,来对2个网站代码进行管理。
又例如IBS后台在进行升级改造,这可能需要比较长的时间,而同时又需要对平时出现的一些问题修修补补,最佳方案就是建立分支,让升级和日常维护分开来,虽然这样在升级结束后代码的合并会有些难度,但至少可以保证在升级过程中的代码不会跟日常维护的修改造成混乱。
分支跟版本库的差别?
分支跟版本库本来就是不同的东西,不过估计有人看了上面那段话后会问,建立分支是不是等于把版本库重新拷贝一份,所以有了下面的思考
- 版本库是重新复制整个文件夹,而分支用了类似Unix下硬链接的技术,只是在已存在的目录树多建一个入口,而不是全盘复制,所以不管是在磁盘空间、消耗时间付出的代价都是非常小的。
- 分支之间是相互联系的,可以把某一分支的修改合并到另一分支去,例如某天出了一个SuperSVN的东西,于是有人把本文档建立分支进行修改,于是就有SVN和SuperSVN两个分支了,改着改着发现有段话写错了,这样2个分支就都可能存在这种错误了,如果是2个版本库的话,你就要改2次了,而如果是分支,你可以把一个分支的修改合并到另一分支去,这就是分支的相互联系
- 新建版本库,意味着新的权限关系,当然,你也可以把配置文件复制一份到新的版本库
- 维护带来的问题?
3. 使用分支
1) 创建分支
选择要创建分支的文件或文件夹,右击选TortoiseSVN >> Branch/Tag,在 To Url输入分支新路径
2) 查看分支
五、进阶
1. 以后台服务方式启动
2. 从CVS转换到SVN
本节引用《cvs2svn 把CVS档案库转换为SVN档案库》,作者yasakya
cvs2svn工具是用来把CVS档案库转换为SVN档案库的。
-
安装
-
python2.4
http://www.python.org/download/
说明:下载最新版本的Python for Windows的安装程序python-2.4.1.msi,按照默认的方式安装Python,假设安装目录是C:Python。
-
cvs2svn
http://cvs2svn.tigris.org/servlets/ProjectDocumentList?folderID=2976
说明:用WinRAR解压到任一个目录下。打开命令行窗口转到cvs2svn所在的目录先测试一下python,执行C:pythonpython cvs2svn,这时候会输出cvs2svn的帮助信息。
-
UnxUtils.zip
http://unxutils.sourceforge.net/
说明:由于cvs2svn用到了GUN sort工具,因此必须下载UnxUtils.zip,把该压缩包下的usr/local/wbin/sort.exe文件解压到cvs2svn目录中。
-
rcs57pc1.zip
http://www.cs.purdue.edu/homes/trinkle/RCS/
说明:需要用到RCS的一个工具co.exe,下载rcs57pc1.zip,把该压缩包中的bin/win32下的rcslib.dll以及co.exe这两个文件同样解压到cvs2svn目录中。
-
使用cvs2svn把CVS档案库转换为SVN档案库
接下来我们开始转换资源库,输入以下命令
C:Pythonpython cvs2svn –s d:svnrepositoryproject1 project1
其中我们假设project1是原有CVS资源库中的一个项目。
下面是在我的机器上转换完毕后cvs2svn显示详细的统计信息:
cvs2svn Statistics:
------------------
Total CVS Files: 7
Total CVS Revisions: 7
Total Unique Tags: 0
Total Unique Branches: 0
CVS Repos Size in KB: 2261
Total SVN Commits: 2
First Revision Date: Sat Sep 03 15:05:26 2005
Last Revision Date: Sat Sep 03 15:05:27 2005
------------------
Timings:
------------------
pass 1: 0 seconds
pass 2: 0 seconds
pass 3: 0 seconds
pass 4: 0 seconds
pass 5: 0 seconds
pass 6: 0 seconds
pass 7: 0 seconds
pass 8: 1 second
total: 3 seconds
转换完毕后我们用浏览器打开 http://localhost/svn/project1 即可看到SVN仓库
注意如果要用 --encode=gb2312,必须使用python2.4以上版本
六、附录
A. 参考资源
-
《Subversion特性》
http://www.subversion.org.cn/index.php?option=com_content&task=view&id=72&Itemid=9
-
《使用Subversion进行版本控制》中文版
-
《TortoiseSVN帮助手册中文版 1.5版》
-
《把CVS档案库转换为SVN档案库》
http://www.iusesvn.com/bbs/viewthread.php?tid=245
B. 相关资源
-
Subversion
http://subversion.tigris.org/
-
TortoiseSVN
http://www.tortoisesvn.net
-
SVNmanager
基于PHP的SVN管理工具
http://svnmanager.sourceforge.net/
-
Easysvn
一个开源的SVN客户端
http://code.google.com/p/easysvn/
- 大小: 40.2 KB
- 大小: 81.4 KB
- 大小: 12.7 KB
分享到:
相关推荐
### SVN学习笔记 #### 版本控制的重要性及概念解析 版本控制在软件开发过程中扮演着极其重要的角色。尤其是在多人协作的环境下,版本控制系统能够有效帮助团队成员管理代码、文档和其他重要资源的不同版本,确保每...
- 学习笔记通常包含个人理解和实践总结,可能涵盖一些实用技巧和常见问题解决方案。 通过以上内容,你将能够掌握SVN的基本操作和使用策略,更好地融入团队开发环境中。在实际工作中,结合具体的项目需求和团队协作...
以下是对"SVN笔记学习"内容的详细解读: 1. **Linux下SVN的搭建** - **安装SVN**: 在Linux系统中,通常通过包管理器来安装SVN,如在Ubuntu或Debian上使用`apt-get install subversion`,在CentOS或Fedora上使用`...
【SVN使用笔记笔记】 SVN,全称Subversion,是一种广泛使用的版本控制系统,被誉为程序设计中的“后悔药”。它允许开发团队在多个用户之间共享和管理代码,同时记录每一次修改,以便在需要时恢复旧版本,防止数据...
集中式版本控制系统以CVS和SVN为代表,它们使用一个单一集中管理的服务器来保存所有文件的修订版本,所有开发者从该服务器下载最新版本,进行开发并提交更改。CVS是最早的开源版本控制系统之一,它可以跨平台使用,...
本压缩包提供了丰富的 SVN 学习资源,包括安装教程、文档和视频,旨在帮助你快速掌握 SVN 的使用。 1. **SVN 安装**: - SVN 的安装过程通常分为两步:服务器端安装(如安装 SVN 服务器软件如 Apache 或 VisualSVN...
本文将从SVN客户端与服务器端的安装配置、版本控制操作、用户权限管理以及数据备份恢复等方面进行详细的学习笔记记录。 首先,进行SVN客户端软件的安装,以TortoiseSVN为例,它为Windows环境下提供图形界面的客户端...
这篇笔记主要面向初学者,涵盖了SVN的基本操作,包括安装、与Eclipse的集成以及如何有效地学习和使用SVN。 **1. SVN安装** 在Windows环境下,你可以下载SVN的安装文件,将其安装在D盘的指定目录。安装完成后,SVN的...
**我的SVN学习笔记(原创)** 在信息技术领域,版本控制系统是不可或缺的工具之一,它帮助开发者跟踪和管理代码的变化,使得多人协作变得有序而高效。Subversion(简称SVN)就是这样的一个开源版本控制系统,它允许...
**标题解析:** "svn学习笔记-windows下安装svn加apache的安装流程" 这个标题告诉我们,本文将重点讲解如何在Windows操作系统上安装Subversion(简称svn)以及与Apache服务器的集成配置过程。Subversion是一款流行...
通过本文的学习,我们不仅深入了解了SVN的基本概念和原理,还掌握了SVN的实际应用技巧。无论是对于个人开发者还是大型软件团队,熟练运用SVN都是非常必要的。希望本文能够帮助读者更好地理解SVN的核心价值,并将其...
### SVN详细笔记 #### 一、SVN简介与特点 Subversion(简称SVN)是一种分布式版本控制系统,用于管理文件和目录集,并记录这些文件和目录集随着时间的变化历史。相较于早期的版本控制系统如CVS(Concurrent ...
在“SVN文档-中文简体.pdf”中,你可以学习如何安装和配置SVN,以及如何使用基本的版本控制操作,如添加、提交、更新和回滚。 在选择Git还是SVN时,通常会考虑项目规模、团队协作模式以及个人偏好。对于大型项目和...
将svn服务器端和客户端的安装,配置,使用讲解的很详细
【SVN 学习笔记】 SVN,全称Subversion,是一种版本控制系统,用于管理和跟踪文件及目录在不同时间的变化,使得多人协作开发时能够有效管理代码版本,防止代码冲突,回溯历史版本,以及方便地进行代码审查。这篇...
SVN,全称为Subversion,是一种广泛使用的版本控制系统,用于管理软件项目的源代码和其他文件的变更历史。在本文中,我们将深入探讨SVN的基本概念、安装、配置以及如何使用它进行版本控制。 首先,让我们从SVN...