SVN的使用(一)

来源:互联网 发布:nginx 显示目录结构 编辑:程序博客网 时间:2024/04/28 11:33

             入门-什么是Subversion
本文来自Svn中文网[www.svn8.com]转发请保留本站地址:
http://www.svn8.com/svnsy/20080202/3.html

版本控制是管理信息变更的艺术。版本控制软件成为程序员的重要工具已经很久了,因为作为程序员的典型行为,他们常要花时间在这样的事上:今天对软件做点改动而明天又需要取消。但是版本控制软件的用处远不止于软件开发。只要你发现人们需要用计算机管理经常修改的信息的地方,都有版本控制的用武之地,也就是Subversion的展示舞台。

Svn8.Com


本章对Subversion作简要介绍:它是什么?它做什么?怎么得到它?

Svn中文网


什么是Subversion?Subversion是一个免费的、开放源码的版本控制系统。就是说,Subversion管理随时改动的文件和目录。文件树被放在一个中央资料库(Repository)中。这个资料库象一个普通的文件服务器,但是它可以记录文件和目录的每次改动。它允许你恢复以前旧版本的数据,或者检查数据变化的历史。因此,很多人把版本控制系统看成某种“时光机”。 参考资料:www.svn8.com

Subversion允许通过网络访问它的资料库,因而可以被位于不同计算机前的人们同时使用。在某种程度上,允许人们从自己的地方修改和管理同一组数据有助于促进相互间的合作。由于不再受任何修改都必须通过单一渠道来进行的限制,改进可以更快的实施。而且因为工作被本化了,你不必担心取消限制会导致工作质量下降。如果对数据作了不正确的改动,只要撤销就行了。

Www.Svn8.Com


一些版本控制系统也是软件配置管理(SCM)系统。这些系统针对管理程序源代码特别定制,有很多专用于软件开发的功能。比如,系统可以理解编程语言或者支持软件构建工具。然而Subversion不是这样的系统。它是一个通用的系统,可以用来管理任何文件集合。对你来说可能是源代码,对别人来说,可能是从购物清单到数字影像的混合,或更多别的文件 Www.Svn8.Com

本文来自Svn中文网[www.svn8.com]转发请保留本站地址:http://www.svn8.com/svnsy/20080202/3.html

     Subversion的特性


当讨论Subversion给版本控制带了什么特性的时候,看看它如何改善了CVS的设计是很有帮助的。如果你不熟悉CVS,你可能不理解所有这些特性。如果你根本不熟悉版本控制,那如果不先读一下第二章基本概念的话,可能会有点茫然。在第二章里我们提供了对版本控制的一般性介绍。 Svn中文网

Subversion提供了 Bbs.Svn8.Com

目录版本化
CVS只跟踪单个文件的历史,但Subversion实现了一个“虚拟”的版本化文件系统,可以跟踪整个文件目录树随时间的改变。文件和目录都版本化了。
Www.Svn8.Com

真正的版本历史
由于CVS局限于文件版本化,而类似复制和改名这些操作,虽然是在文件上执行,但实际上真正改动的是目录的内容,所以CVS不能支持这些操作。另外,在CVS中无法做到用同名的新文件代替原来的版本化文件而不影响原来文件的历史,即使它们毫不相干。在Subversion中你可以增加,删除,复制,重命名文件和目录。 每一个新加的文件开始于一个自己的新的干净的历史。

参考资料:www.svn8.com

原子提交
一组改动要么完全进入资料库,要么完全不。这让开发人员可以一个逻辑块为单位创建和提交改变,从而防止只有部分改动成功发送到资料库所带来的问题。

Www.Svn8.Com


版本化源数据
每个文件和目录由一个由键值对组成的属性集与之相关联。你可以创建和保存任意你想要的键值对。属性也被按时间版本化了,就像文件内容一样。

Svn中文网


网络层的选择
Subversion有一个资料库访问的抽象概念。使得人们可以很容易的完成新的网络机制。Subversion可以作为一个扩展模块插入到Apache Http server中。这使Subversion在稳定性和互操作性上有很大优势,而且可立即利用服务器现有的特性,比如认证,授权,压缩传送(wire compression)等等。也可使用一个更轻量级,独立的Subversion服务器进程。该服务器使用定制的协议,可以很容易的调节到SSH上。

Www.Svn8.Com

一致的数据处理
Subversion使用二进制差别算法表示文件的差别。这种算法对文本和二进制文件同样有效。所有类型的文件同样压缩存储于资料库。文件差别可以在网络上双向传送。 参考资料:www.svn8.com

高效的分支和标签
分支和标签的的花费不一定与项目大小成比例。Subversion 创建分支和标签只是简单的使用类似hard-link的机制来复制项目。因而这些操作仅仅花费非常少的,一定的时间。

Www.Svn8.Com


Hackability
Subversion没有历史包袱,它由一组有定义良好的API的C共享库实现。这使得Subversion 极好维护和被其他应用和语言利用。 Bbs.Svn8.Com

本文来自Svn中文网[www.svn8.com]转发请保留本站地址:http://www.svn8.com/svnsy/20080202/5.html

=============

         Subversion的架构
本文来自Svn中文网[www.svn8.com]转发请保留本站地址:
http://www.svn8.com/svnsy/20080202/6.html

一端是Subversion 资料库,它管理你所有的版本化数据。另一端是你的Subversion 客户端程序,它管理部分版本化数据的本地映射(叫做“工作副本”)。在这两端之间有多条基于不同的资料库访问层(RA)的通道。其中一些通道通过电脑网络和网络服务器来问资料库,另外一些绕过网络直接访问资料库。

Svn8.Com

本文来自Svn中文网[www.svn8.com]转发请保留本站地址:http://www.svn8.com/svnsy/20080202/6.html

==================
         安装Subversion
本文来自Svn中文网[www.svn8.com]转发请保留本站地址:
http://www.svn8.com/svnsy/20080202/7.html
Subversion基于一个可移植的软件层:APR(the Apache Portable Runtime library)。这意味着Subversion可以运行在任何可以运行Apache httpd server的操作系统上:Windows, Linux, 各种 BSD, Mac OS X, Netware, 等等。 Bbs.Svn8.Com

最简单的获得Subversion的办法是下载相应于你的操作系统的二进制包。Subversion 的网站 (http://subversion.tigris.org) 通常会有这些有志愿者贴上去的包供下载。网站通常有为微软操作系统作的图形界面的安装包。如果你是使用Unix类的操作系统,你可以使用你系统支持的分发系统(比如RPMs,DEBs,等等)来取得subversion。

Www.Svn8.Com


另外,你也可以直接从源代码构建Subversion。从Subversion网站下载最新发布的源代码。解压后,按照在INSTALL文件中的指导来构建它。注意:一个发布的源码包包括了用来构建一个可以和远程资料库交互的命令行工具的所有需要(特别是:APR,APR-utils,和neon库)。但是Subversion的可选部分有很多其他的依赖库,比如Berkeley DB,可能还有Apache httpd。如果你想做一个完整的构建,要确认你有所有在INSTALL文件中要求的软件包。如果你想开发Subversion本身,可以用你的客户端抓取开发中的源码。可以参考“得到源代码”这一节。

Svn中文网
本文来自Svn中文网[www.svn8.com]转发请保留本站地址:
http://www.svn8.com/svnsy/20080202/7.html


=============

            Subversoin的组件
本文来自Svn中文网[www.svn8.com]转发请保留本站地址:
http://www.svn8.com/svnsy/20080202/8.html

只要安装了Subversion,就会有很多不同的文件。以下对这些文件做一个概述。如果这些描述让你挠头的话千万不要给吓着了,这本书会用很大的篇幅来消除你的困扰。 Svn8.Com

svn
命令行模式的客户端程序 参考资料:www.svn8.com

svnversion
一个工作副本状态报告程序(报告当前条目的版本号)

Www.Svn8.Com

svnlook
一个检查Subversion资料库的程序 参考资料:www.svn8.com

svnadmin
创建,压缩和修复Subversion资料库的程序

Svn8.Com


svndumpfilter
过滤Subversion 资料库转储流(dump streams)的程序 Bbs.Svn8.Com

mod_dav_svn
Apache HTTP Server的plug-in模块,用来使他人可以通过网络访问你的资料库 Svn中文网

svnserve
定制的独立运行的服务程序,可作为守护进程或被SSH调用。用来使他人可以通过网络访问你的资料库另一途径。 参考资料:www.svn8.com

如果你的Subversion 安装正确,你应该可以启动了。下面两章将引导你使用svn,Subversion的命令行客户程序。 Svn8.Com

本文来自Svn中文网[www.svn8.com]转发请保留本站地址:http://www.svn8.com/svnsy/20080202/8.html


=====

         快速上手
本文来自Svn中文网[www.svn8.com]转发请保留本站地址:
http://www.svn8.com/svnsy/20080202/9.html

有些人难于靠阅读本书提供的自顶向下的途径来吸收新技术。这一节将给出一个非常简短的对Subversion 的介绍,这是为那些习惯于自底向上学习的人设计的。如果你是这种愿意从实际体验来学习的人,以下的演示将带你起步。随着演示的进程,我们给出了本书的相应章节的链接。

Svn8.Com

如果你对版本控制完全没有概念,或对CVS和Subversion使用的“复制-修改-合并”模式不了解。那么在开始前,你应该读一下第二章基本概念。

Bbs.Svn8.Com


注意注意:以下例子假设你安装好了Subversion 命令行客户工具svn,和管理工具svnadmin。还假定你的svn客户程序是基于Berkeley DB编译的。要验证这些,运行svn --version,确认ra_local模块可用。如果没有这个模块,客户程序无法访问file://这样的URL。

Bbs.Svn8.Com

Subversion 把所有的版本化数据保存在中央资料库。所以,首先要创建一个新的资料库:

参考资料:www.svn8.com

$ svnadmin create /path/to/repos
$ ls /path/to/repos
conf/  dav/  db/  format  hooks/  locks/  README.txt
 
Www.Svn8.Com 这条命令创建了一个新目录/path/to/repos,该目录包含一个Subversion 资料库。请确认这个目录是在本地硬盘上而不是网络共享。这个目录主要包括一组Berkeley DB数据库文件。如果你进入这个目录,也看不到你的版本化文件。关于资料库的创建和维护的更多信息,参见第 5 章 资料库管理

Svn8.Com


接下来,创建一个文件和目录树以便导入到资料库。你创建的目录树应该包括三个顶级目录,分别命名为branches, tags和trunk。这么做的原因很快就清楚了(参见第 4 章 分支和合并):

参考资料:www.svn8.com


/tmp/project/branches/
/tmp/project/tags/
/tmp/project/trunk/
               foo.c
               bar.c
               Makefile
               ....
 
Www.Svn8.Com 当你准备好了这个数据树, 就用svn import命令(参见“svn import”一节)把它导入到资料库中: Svn中文网

$ svn import /tmp/project file:///path/to/repos -m "initial import"
Adding         /tmp/project/branches
Adding         /tmp/project/tags
Adding         /tmp/project/trunk
Adding         /tmp/project/trunk/foo.c
Adding         /tmp/project/trunk/bar.c
Adding         /tmp/project/trunk/Makefile
....
Committed revision 1.
$
 参考资料:www.svn8.com 现在,资料库里包含了这个数据树。注意原来你创建的/tmp/project目录没有被改变。Subversion 不知道它(事实上,如果你愿意的话删除它也没关系) 。为了开始操作资料库数据,你需要创建数据的一个新的“工作副本”,一种私有的工作区。以下命令让Subversion “检出”资料库中trunk目录的一个工作副本。
Www.Svn8.Com

$ svn checkout file:///path/to/repos/trunk project
A  project/foo.c
A  project/bar.c
A  project/Makefile

Checked out revision 1.
 Bbs.Svn8.Com 现在你有资料库中数据的一份个人拷贝,放在一个名为project的新目录中。你可以编辑这些在你工作副本中的文件然后将变化提交到资料库。

参考资料:www.svn8.com

进到你的工作副本并编辑一个文件的内容 Svn中文网

运行svn diff来查看你的改动的标准diff输出

Svn8.Com


运行 svn commit 把文件的新版本提交到资料库

参考资料:www.svn8.com


运行svn update 让你的工作副本和资料库中最新的数据同步 Www.Svn8.Com

关于所有能在工作副本上进行操作的完整教程,阅读第 3 章 使用指南 Www.Svn8.Com

到这里,你可以使你的资料库能通过网上访问。参见第 6 章 服务器配置,来学习各种可用的服务进程和配置方法。

参考资料:www.svn8.com


本文来自Svn中文网[www.svn8.com]转发请保留本站地址:http://www.svn8.com/svnsy/20080202/9.html

原创粉丝点击