您的位置:首页 > 其它

版本管理 与 Subversion软件的使用

2011-03-26 20:01 267 查看
版本管理也即对软件产品的管理,主要是使用版本管理软件,对软件产品开发过程中的一个或多个文件的修订过程进行跟踪,当这些文件组成的产品可以稳定运行时,就成为一个版本。版本管理不仅可以提高软件产品的稳定性,也可以优化开发人员的工作量。

版本管理软件有许多,如VSS、PVCS、CVS、SubVersion(SVN)等。
svn(subversion)是近年来崛起的版本管理工具,是cvs的接班人。目前,绝大多数开源软件都使用svn作为代码版本管理软件。
svn服务器有2种运行方式:独立服务器和借助apache。2种方式各有利弊。
svn存储版本数据也有2种方式:BDB和FSFS。因为BDB方式在服务器中断时,有可能锁住数据(我在搞ldap时就深受其害,没法根治),所以还是FSFS方式更安全一点。
SVN的配置与运行
1.SVN 命令行服务器
(1) 在D盘创建名为project的文件夹。使用SVN的svnadmin命令创建一个用于存放项目资源库的文件夹:
svnadmin create d:/project/learn。
Subversion将在d:/project/learn目录下生成一些用于存储项目信息的文件夹与文件


(2) 打开./conf/svnserve.conf,在[general]节里添加如下内容,或删除同样语句前的#。前两行设置普通用户和认证用户的权限;第三行指定用户信息存储的文件;第四行指定软件仓库的名称。
anon-access = read
auth-access = write
password-db = passwd
realm = learn
(3) 打开./conf/passwd文件,该文件即为存储用户信息的文件。建立新的帐号,格式如“用户名=密码”。系统已自带了#harry = harrysecret 这样一个用户名为harry密码为harrysecret的帐号,去掉前面的#,使用该帐号亦可。
Admin = 123456
(4) 配置完成后,即可运行SVN了,命令行输入:
svnserve -d -r "d:/develop/project"
第一次运行时,防火墙可能弹出阻止窗口,允许就行了。以后就没反应了,但注意不要关闭该窗口。

(5)SVN以服务运行
命令行运行的SVN服务器,命令行窗口要一直保持运行,最好的方法是把SVN作为服务运行,用以下命令,把SVN注册为服务
sc create svnserve binpath= "/"C:/Program Files/Subversion/bin/svnserve.exe/" --service --root "d:/project" displayname= "Subversion" depend= tcpip start= auto

2. SVN命令行客户端
客户端命令svn,是一个基于命令行的工具,完成大部分项目管理操作。
A. 导入项目
格式:svn import 项目路径 SVN资源库路径及名称 –m “项目说明文字,必选” –username 项目资源库管理者用户名 –password项目资源库管理者密码
示例:
(1)创建D:/develop/code文件夹,并向文件夹中复制一些文件
(2)执行如下命令,注意 -- 符号的中英文
D:/develop/copy>svn import d:/develop/code svn://localhost/learn -m "hahahha" --
username admin --password 123456
增加 D:/develop/code/新建 文本文档.txt
增加 D:/develop/code/123456.txt

提交后的版本为 1。
(3)这样,D:/CODE目录下的文件就成功的导入到了资源库中,其它用户可以通过SVN客户端命令,导出这些文件进行编辑。
B. 导出项目
格式:Svn checkout SVN资源库路径及名称--username admin --password 123456
示例:
(1)创建D:/develop/copy文件夹,用于存放导出的项目
(2)切换到D:/develop/copy目录,执行命令
D:/develop/copy>svn checkout svn://localhost/learn --username admin --password 1
23456
A learn/新建 文本文档.txt
A learn/123456.txt
取出版本 1。
(1) 运行命令后,当前文件夹(D:/develop/copy)下,多了一个learn文件夹,即是命令导入的项目文件。
C. 更新项目
该命令只能用于在svn import成功,并使用svn checkout导出的项目中。
主要用于团队工作,当其它成员对项目做出更新并提交后,可以使用svn update命令,来取得这些更新的文件到当前编辑的项目。该命令没有参数。
如果项目中有更新的数据时,SVN用相应的标记标出更新文件的状态。

U

文件被更新
A
新加入的目录或文件
D
被删除的目录或文件
R
使用新的项目,覆盖具有相同名称的旧项目
G
同一文件被同时修改,使用SVN合并后,没有产生问题的文件状态
C
编辑文件与服务器文件冲突的文件
D. 查看项目状态
Svn status 用于列出当前编辑的项目中的所有相关的修改,而不用访问资源库。运行svn status时,当前目录必须有一个有效的副本。SVN会列出当前项目中,已经做出修改的状态,并设置状态标记。

A

需要加入资源库
C
本地项目与服务器项目冲突,在提交前必须手动解决
D
需要从资源库删除
M
被修改的项目
R
与此标记对应的项目将被删除后使用同名项目覆盖
X
目录没有版本化,但与Subversion外部定义关联
?
不在版本控制之下的项目
!
在版本控制之下,但已经损坏的项目。可以使用svn update或svn revert file 命令恢复原来的文件
~
当前编辑版本中,与资源库重名的项目
I
不在版本控制之下的项目,SVN会在svn add,svn import,svn status命令中忽略这个文件
Svn status –v :显示当前编辑版本中的所有项目
Svn status –u :根据资源库添加新信息
例如,在d:/develop/copy/learn副本中,新增文件45545.txt,修改文件123456.txt,执行命令
D:/develop/copy/learn>svn status
? 45545.txt
M 123456.txt
E. 项目对比
Svn diff 根据当前编辑版本中的元数据,与已经修改的版本进行比较,并列出已经修改的项目,以及修改的具体内容。
D:/develop/copy/learn>svn diff
Index: 123456.txt
=====================================
--- 123456.txt (版本 1)
+++ 123456.txt (工作副本)
@@ -1 +1,3 @@
-44646546546
/ No newline at end of file
+44646546546
+
+我是新增的一行
/ No newline at end of file
Svn diff支持重定向操作,可以把内容导出到文件中
Svn diff > d:/diff.txt
F. 恢复项目
Svn revert ,从资源库中恢复指定的文件到当前编辑版本中。本地修改失败后,可以这样恢复。
Svn revert 123456.txt
G. 项目提交
Svn commit 把文件的新状态提交到资源库中,以便于下次修改项目时,调用编辑好的内容。
格式:svn commit 要提交的文件或目录 –m “注释” –username 用户名 –password 密码
Svn commit .

Subversion快速入门教程:http://www.subversion.org.cn/?action-viewnews-itemid-1

Subversion的Windows客户端TortoiseSVN。http://tortoisesvn.net/

SVN与开发工具
不管使用命令行运行客户端,还是使用TortoiseSVN,都是单独运行,要编辑导出的代码,还是要用外部编辑器。
Eclipse中可以使用Subclipse插件,实现对SVN服务的支持。
Dreamweaver 中 用 SubWeaver_0_04.mxp http://code.google.com/p/subweaver/ 双击即可安装,参考http://hi.baidu.com/279713119/blog/item/9fbecb89e7232ddefd1f10f5.html

SVN与CVS项目转换
可从官方网站下载转换工具
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: