软件开发管理之版本控制管理:Subversion (SVN)
——Angel
软件开发管理之版本控制管理:Subversion (SVN) 1
版本控制之于程序员,就好比安全网之于高空秋千表演者。知道安全网就在那里,万一自己摔落它能够提供保护,高空秋千表演者才能放心大胆地在空中飞跃。同样,版本控制使您有能力去冒以往想都不敢想的风险。如果哪儿出了错,您总是可以使自己的代码回复到一个已知的、工作正常的版本。您可以在不触及主干的分支中进行试验,而不会影响到其他小组成员。在已经发布的产品的较老版本中发现 bug 时,您可以轻松检出特定版本,以确认、修订,并生成该 bug 的修补程序。如果没有版本控制,您必须极为慎之又慎,缓慢地推进,总而言之,生产力会更低。
Subversion 是一种开放源码的全新版本控制系统,支持可在本地访问或通过网络访问的数据库和文件系统存储库。不但提供了常见的比较、修补、标记、提交、回复和分支功能性,Subversion 还增加了追踪移动和删除的能力。此外,它支持非 ASCII 文本和二进制数据,所有这一切都使 Subversion 不仅对传统的编程任务非常有用,同时也适于 Web 开发、图书创作和其他在传统方式下未采纳版本控制功能的领域。
(注:摘抄文章《软件开发管理之版本控制管理》)
版本库:Subversion是一种集中的分享信息的系统,它的核心是版本库,它储存所有的数据,版本库按照文件树形式储存数据—包括文件和目录。任意数量的客户端可以连接到版本库,读写这些文件。通过写,别人可以看到这些信息,通过读数据,可以看到别人的修改。
实际上,版本库是另一种文件服务器,而不是你常见的那一种。最特别的是Subversion会记录每一次的更改,不仅针对文件也包括目录本身,包括增加、删除和重新组织文件和目录。 当一个客户端从版本库读取数据时,通常只会看到最新的版本,但是客户端也可以去看以前的任何一个版本。举个例子,一个客户端可以发出这样的历史问题“上个星期四的目录是怎样的?”或是“谁最后一个更改了这个文件,更改了什么?”,这些是每一种版本控制系统的核心问题:系统是设计来记录和跟踪每一次改动的。
(注:摘抄文章《软件开发管理之版本控制管理》)
选择svn-win32-1.6.6.zip,我喜欢解压就能用的版本
http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=11151&expandFolder=11151&folderID=91
解压svn-win32-1.6.6.zip,如D:\svn\svn-win32-1.6.6,设置SVN_HOME,加入PATH,%SVN_HOME%\bin,添加SVN_EDITOR变量为notepad.exe
(注:
》在进行解压的时候,我们一般是新创建一个文件件svn,然后在svn目录下进行解压,这个主要是我们之后需要在svn目录新建存放工程的文件和目录。还有就是如果需要安装客户端的话,那么我们一般的话,是和服务端放在一个文件夹进行管理。
》环境变量包括用户变量和系统变量,我们主要配置的是系统变量,以上需要配置三个系统变量 SVN_HOME:这个需要通过新建的方式创建; PATH:在原先的基本上进行追加;SVN_EDITOR:这个也需要新建,主要是可以进行使用文本编辑器)
先创建一个目录如:D:\svn\svn_test,使用命令添加该仓库:
命令如下
1. svnadmin create D:\svn\svn_test
该命令会在D:\svn\svn_test生成一些目录和配置文件
打开仓库(就是刚才创建的svn_test)目录下的conf\svnserve.conf文件在[general]下添加:
命令如下
1. auth-access = write
2. password-db = passwd
auth-access = write
password-db = passwd
如果允许匿名用户访问,那就添加
命令如下
1. anon-access = read
( 自己加上 start其中anon-access = read表示匿名用户可读,也可改成none或者write,分别表示没权限和可写,如果anon-access设成可写了,就是谁都可以改代码了,这是我们不希望的。
auth-access = write表示认证用户可写。
password-db = passwd.conf表示密码文件是passwd.conf。
在svnserve.conf所在目录新建一个文件passwd.conf,编辑内容如下:
[users] flmn = password |
表示有个用户叫flmn,密码是password,下面可以再添加用户。
(注:如果在import的时候,提示Failed,那么就是没有进行write的权限,修改auth-access=write即可. 参考:http://wenwen.soso.com/z/q223575153.htm)
打开仓库目录下的conf\passwd文件在[users]下添加一个用户如:username,密码:password:
命令如下
1. username = password
我们在实际当中需要配置各种角色的用户,比如可读,可写的....
具体操作如下:
》svnserve.conf:
配置如下:
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
说明:annon-access = none 是不允许匿名访问
auth-access = write 拥有写的权限
password-db = passwd 对应的用户名和密码查看当前对应的文件
auth-db = authz 对应的用户权限配置查看authz文件
passwd 文件(添加用户,这边举例一个进行说明):
angel = angel
说明:用户名是 左边的angel 密码是右边的 angel
要十分的注意:
1. 每一个用户都需要有一个组。
2. 用户名的最左边和最右边一定不能出现空格,否则访问的时候会报一个认证配置无效。
authz文件:
[groups]
admin = angel
[/]
@admin = rw
*= r
参考资料:http://www.iusesvn.com/bbs/viewthread.php?tid=6&extra=page%3D1
username = password
命令如下
1. svnserve --daemon --root D:\svn\svn_repository
svnserve --daemon --root D:\svn\svn_repository
方法一:
使用客户端TortoiseSVN登录,地址是:svn://localhost,如果不是在本机登录就要:svn://ip,右键svn://localhost创建一个目录如:test,会要求输入用户名和密码,username:password
方法二:
先用客户端把svn://localhost,checkout到一个目录下,然后再在那个目录添加文件或文件夹test,然后直接提交就行了
方法三:
使用命令提交本地内部,打开命令控制台,去到想要提交内容的目录如:D:\project\myproject,然后使用命令提交:
命令如下
1. svn import svn://localhost/test
svn import svn://localhost/test
开发人员使用svn进行开发的一般流程是:
——>从SVN服务器上检出项目——> checkout
——> 更新文件或目录 ——> update
——> 修改文件或目录 —— commit(提交)变更
——> 增加文件或目录 ——> add(增加) 文件或目录——> commit(提交)
——> 删除文件或目录 ——> commit(提交)上一级目录
但要注意,当需要向服务器提交时,必须先更新再提交,以防版本冲突。