Chinaunix首页 | 论坛 | 博客
  • 博客访问: 66443
  • 博文数量: 12
  • 博客积分: 1410
  • 博客等级: 上尉
  • 技术积分: 125
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-06 17:41
文章分类

全部博文(12)

文章存档

2010年(2)

2008年(4)

2007年(6)

我的朋友

分类: Java

2007-03-09 17:35:41

SVN版本控制解决方案

             

1,什么是SVN

         Subversion 是一个自由/开放源码的版本控制系统, 也就是说Subversion 管理着随时间改变的档案. 这些档案放置在一个中央档案库(repository) . 这个档案库很像一个寻常的档案服务器, 不过它会记住每一次档案的变动. 这样你就可以把档案回复到旧的版本, 或是浏览档案的变动历程. 你甚至可以把版本控制系统想象成某种“时光机器”。

1.1SVN的工作原理

          SVN采用的是一种非锁定式的系统,通过提供一种 复制――修改――合并的解决方案 来完成档案的管理。每个协同工作的成员通过从服务器端的中央档案库(repository) 中取得(check out)档案,并把取得的档案作为自己的工作复本(其他人是无法访问的),然后他们开始各自的修改(edit)自己的工作复本,完成修改后,就把自己修改的档案合并到服务器端档案中。 

 

1.2SVN的优点

SubversionCVS相比,除了包含了CVS的全部特性之外,也加入了新的理念:
1
、路径、改名、以及文件meta-data也可进入版本控制范围。
         
缺少这些特性是CVS被抱怨最多的方面之一,subversion不止对文件内容和文件存放位置加入控制,也对目录,拷贝,重命名操作加入版本控制。它也允许文件、目录的相关元数据 meta-data和文件/目录本身一起被版本控制起来,并提供一种机制对文件的执行权限进行控制。

 2Commit动作真正成为原子级的操作了。
         
直到整个commit动作都成功前不会有任何部分的commit会生效。版本修订号只是预确认,而不是对文件预确认。日志信息将绑定到修订信息,而不是象CVS那样冗余的存储下来。

  3、有效的处理二进制文件
         Subversion
对于二进制文件和文本文件的处理同样有效,因为subversion使用一种二进制 差异比较算法来增量存储那些连续的修订本。

2SVN实战

        下面我们通过一个具体的例子来简单的说明下SVN的应用。

2.1SVN的下载与安装

       首先我们去http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91下载最新的SubVersion for windows版本。

          下载完成后直接双击安装。一路next。它会一并把客户端也安装了。

 

2.2,服务端的SVN配置

       1,服务器端中央档案库的建立:

          在命令行下执行

 svnadmin create d:\repos

          

这时会在目录的d:\repos 里建立一个新的档案库. 这个新的档案库会以修订版0 开始其生命周期, 里面除了最上层的根目录(/), 什么都没有. 刚开始, 修订版0 还有一个单一的修订版性质svn:date, 会设定在档案库初建立。 

       conf

           用来存放如用户权限管理之类的配置文件。

 

dav

提供给Apache mod_dav_svn 使用的目录, 让它们储存内部数据.(暂时还没用到)

 

db

主要的Berkeley DB 环境, 里面都是储存Subversion 档案系统(就是你置于版本控制的全部数据所在) 的数据库表格.

 

format

一个内容为一个整数的档案, 表示档案库配置的版本号码.

 

hooks

一个放置hook 脚本文件模板的目录(如果你有安装的话, 还有脚本档本身的档案。

.

locks

用来放置Subversion 档案库锁定数据的目录, 用来追踪存取档案库的客户端。

README.txt

这个档案只是用来告知使用者, 他们在看的是Subversion 的档案库。

 

       2,把需要进行档案管理的工程纳入中央档案库

          在命令行下执行 

 

svn import d:\MyProject file:///d:/repos/MyProject -m “inital”

 

          MyProject工程纳入了版本控制,这样操作以后我们就可以在客户端check out该工程到自己的工作复本了

          

-m 参数的意思是把引号里面的文字作为初始化信息写入到日志文件中

   

      3,为不同的用户分配权限

           打开 conf/ svnserve.conf 修改里面的内容如下:

 

[general]                     

anon-access = read            -----匿名用户只有read权限

auth-access = write            -----授权用户有write权限

password-db = passwd         -----指定密码文件

 

  

  注意:以上内容都要顶格写,不能有空格,否则会报错。

 

打开conf/passwd 和conf/authz,修改里面的内容如下:

 

[users]                      -----配置用户信息

bluestar= bluestar             -----bluestar用户指定密码bluestar

xincai= xincai                -----xincai  用户指定密码xincai

 

 

[groups]                      -----配置用户组信息

groups= bluestar,xincai             -----bluestar,xincai用户指定组为groups

 

[/Frame]
@groups= rw                为组分配read和write权限

 

 

2.3
,客户端的SVN使用

           我们刚才把MyProject这个工程在服务器上加入到了中央档案库中,现在我们就可以在客户端取得这个工程,并保存在自己的工作复本中予以修改、提交。

 

        1,取出档案

   svn checkout svn://192.168.100.100/MyProject  e:/MyProject

       

通过svn自定义的通信协议svn来获取档案,并指定保持工作复本的路径 e:/MyProject,如果不指定该路径,会默认的保存在C盘下。

     svn checkout 还可以提供参数 –username  -password,具体用法如下:

 

   svn checkout –username bluestar –password bluestar svn://192.168.100.100/MyProject  e:/MyProject

  

2,更新档案:

 svn commit e:/MyProject

   

      svn commit 还可以提供参数 –username  -password  -m. ,具体用法如下:

 

 svn commit e:/MyProject  –username bluestar  –password bluestar  -m  修改

   

3,合并档案:

      如果在更新档案的时候,程序提示你更新的文件已过时,这时说明某一个人也跟你修改了同一个文件并先于你更新到服务器上了,你需要通过下面这个命令来跟服务器的程序同步。

 

svn update [path]

  

  执行该命令时,path参数是某个文件的具体位置。

  当不指定path参数时,就与服务器端最新的修订版同步。

 

 

  3,与IDEA的集成

            IDEA5.0开始,SVN已集成到其中,IDEA为用户提供一个图像化界面的SVN客户端。我们可以方便的从中央档案库得到我们的工作复本。并予以修改、提交、同步。

   

阅读(4384) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2008-08-01 09:37:33

SAP99,支持下,也欢迎访问我的博客, SAP资料多多 http://sap99.cublog.cn http://www.sap99.com SAP实施顾问宝典 :http://www.sap99.com/Soft/VIP/200803/182.html