修行的武者

开发研究手记

  DonewsBlog  |  Donews首页  |  Donews社区  |  Donews邮箱  |  我的首页  |  联系作者  |  聚合   |  登录
  46篇文章 :: 0篇收藏:: 49篇评论:: 0个Trackbacks

公告


交换链接:

文章

收藏

相册

友情blog

存档


正在读取评论……


   作为代码库数据存放地的服务器,自然是开发管理的重点对象之一。Subversion服务器管理涉及的主要命令:

svnlook

查看代码库的信息,其中的路径是代码库的路径。

svnadmin

subversion管理工具。

svndumpfilter

指定dump代码库的过滤条件。如,在导出的代码库中包含哪些文件,排除哪些文件。

svnserve

subversion服务器程序。

       Subversion没有提供远程的服务器控制工具,对于服务器的管理命令必须运行在与代码库相同的机器上。这样做的目的也是为了更加的安全。

主要的服务器管理活动:

1.         代码库的基本管理。

创建

动机

建立整个项目的版本控制的环境和目录结构。

步骤

1.       svnadmin create 目录名。目录可以存在,也可以不存在。目录如果存在,目录必须为空目录。

2.       创建版本库的本地内容。如果是全新的项目,那么可能就只有空的目录结构。如果是进行中纳入版本控制的项目(即以前项目内容没有使用版本控制),那么需要先把整个项目复制到服务器的上。这种情况下,目录包含目录结构以及项目文件。

3.       svn import 目录 代码库存放位置 -m 消息。成功后,目录中的内容进入“代码库存放位置”,目录本身就没用了。

注意:目录本身不会进入代码库,只有目录下的内容才会进入。如:

   project

      /src

      /lib

      /readme.txt

使用svn import project …后,在代码库中有readme.txtsrclib,而没有project。为了使project进入代码库,那么在它的上一级在建一个目录,如tmp,使用这个目录作为import的目录。

导出

动机

备份代码库,Subversion的导出文件格式是OS无关的。

步骤

svnadmin dump 版本库目录 > 文件名

导入

动机

þ        代码库的数据迁移,如从一种OS到另一种OS

þ        恢复损坏的代码库。

þ        将原来大的代码库拆分成多个小的代码库,如原来的代码库目录如下:

    projects

      /project1

      /project2

      /project3

现在想以project1project2project3分别作为一个代码库来进行版本控制。

þ        将小代码库合并,即上一种情况的反面。

步骤

1.       获取代码库的导出文件。注意:周期备份的重要性。当代码库损坏后,dump出来的文件也肯定是坏的。此时,就必须使用以前备份的文件。

2.       svnadmin create 新代码库目录。

3.       拆分版本库。如果不需要,跳过此步。在Windows下(unix下使用cat):

type 导出文件 | svndumpfilter include(exclude) path > 新导出文件

4.       svnadmin load 新版本库目录 < 导出文件。如果是合并,那么需要指定父目录:

svnadmin load新版本库目录 --parent-dir 父目录< 导出文件

清理事务

动机

清除提交死事务。通常,事务结束(成功或失败)时会被清除。但是,在有些异常情况下,会导致清除工作永远不再发生。

步骤

1.       svnadmin lstxns来列出未处理的transaction

2.       使用svnlook加上--transaction来查看事务的属性。

3.       确认无误之后,使用svnadmin rmtxns 事务名来清除事务。

也可以使用一条命令来完成,如:

svnadmin rmtxns myrepos 'svnadmin lstxns myrepos '

修复版本库

动机

解锁代码库。如由于前次执行时,断电导致前一个用户锁住代码库。

步骤

svnadmin recover 版本库目录,在执行这个命令时,确定是独占代码库,在执行完之后,重启服务器。

释放无用的数据库日志

动机

节约硬盘空间。(仅对代码库格式为Berkeley DB时需要)。

不用的数据库日志,是指活动数据库不用的日志。但是这些文件需要被保存,以防万一需要时恢复数据库。

步骤

1.       列出无用日志文件

svnadmin list-unused-dblogs 代码库目录

2.       归档并释放

svnadmin list-unused-dblogs 代码库目录 | xargs rm

2.         启动服务器。Subversion支持的存取协议:

file:///

本地文件存取,此时代码库位于本地。如:file:///X:/path/to/repos

http://

通过webdav连接知道Subversion代码库的Apache http server来存取代码库。对于Apache http server需要安装subversion提供的关于webdav的模块,同时还需经过相关的配置。如:http://svn.example.com/repos/calc

https://

http://相同,但使用ssl

svn://

subversion协议。如:svn://example.com/usr/local/repos/project

svn+ssh://

subversion协议,并有ssh加密。如:svn+ssh://example.com/usr/local/repos/

对于file:///协议,不需要启动Subversion的服务器守护进程,svnservesvnserve的开关含义:

-          -i 每个请求会产生一个svnserve进程。

-          -t 一般用于RSHSSH,对于每个经过验证验证的用户来说,就象本地用户通过File:///来存取代码库一样。这个用户需要有操作Repository的权限。

-          -d 以守护进程的方式运行,所有请求都有一个svnserve进程。

当服务器运行之后,需要使用代码库的绝对路径来存取。如版本库位于/usr/local/repositories/project1,那么对于客户端对应的访问的url

svn://host.example.com/usr/local/repositories/project1

为了简化和安全,可以使用-r来指定root。如svnserve -d -r /usr/local/repositories。那么,客户端使用时直接使用svn:// host.example.com/就可以访问代码库的根目录。

3.         Apche web server集成,这样用户就可以通过http://来访问代码库。主要的步骤:

a)         环境配置:最简单的做法就是先安装Apache Web Server,然后安装Subversion。这样相关的配置(包括Web Dav和权限)都会自动的完成。手动配置的做法,详见subversion的手册。

b)        代码库的配置,在httpd.conf文件中:

目的

配置

共享单个代码库

<Location /repos>

   DAV svn

   SVNPath /absolute/path/to/repository

</Location>

共享多个代码库,如果这些代码库有共同的父目录

<Location /svn>

   DAV svn

   # /svn/foo映射到/usr/local/svn/foo

   SVNParentPath /usr/local/svn

</Location>

              注意,在location中指定的地址不要有重叠的。如已经存在一个documentrootwww,那么就不要指定/www/repo。否则,apache将不知如何处理请求的url。此时,启动apache(不需要启动svnserve进程),客户端就可以使用http://来访问代码库了。

Trackback: http://tb.donews.net/TrackBack.aspx?PostId=594287


[点击此处收藏本文]  发表于2005年10月19日 6:12 PM




正在读取评论……

发表评论

大名:
网址:
验证码
评论