A.5. 使用 Subversion

A.5.1. 简介

截至 2012 年 7 月, FreeBSD 已将所有储存 FreeBSD 源代码、 文档、 Ports Collection 的主版本控制系统更换为 SubversionSVN )。

Note:

Subversion 是个常见开发工具。 对于绝大部分用户都应该使用 FreeBSD 更新 FreeBSD 基本系统, 使用 Portsnap 更新 FreeBSD Ports Collection 。

Subversion 中, URL 用于指定一个仓库库, 采用 protocol://hostname/path 形式, 镜像也可能支持其它协议。 路径(path) 的第一部分是项目仓库种类, 主要有存储 FreeBSD 基本系统源码的 base 、 存储 Ports Collection 的 ports 和存储文档的 doc 这三个软件仓库。 举个例子: svn://svn0.us-east.FreeBSD.org/ports/head/ ,它指的是 svn0.us-east.FreeBSD.org 镜像站上的 ports 仓库的主分支, 使用 svn 协议。

A.5.2. 安装

要初始化仓库之前, 必须先安装 Subversion 。 如果 ports 树副本已建立, 则可以通过以下方法安装 Subversion

# cd /usr/ports/devel/subversion
# make install clean

如果 ports 树 不可用, 可以使用预编译包安装 Subversion

# pkg_add -r subversion

如果使用 pkgng 作为包管理器, 则使用替换 Subversion 安装命令:

# pkg install devel/subversion

A.5.3. 运行 Subversion

svn 命令用来获取的源码的原始拷贝到本地目录。 这个目录中的文件称为 本地工作副本

Warning:

如果本地目录已经存在, 但不是由 svn 创建的, 那么请重命名或删除它。 签入 (Checkout) 时, 如果非 svn 目录, 则可能出现现存文件与软件仓库相冲突的情况。

从指定的软件仓库签入, 使用:

# svn checkout svn-mirror/repository/branch lwcdir

其中:

  • svn-mirror 的 URL 可以从 Subversion 镜像站 上获得。

  • repository 是项目仓库名称, 即: baseportsdoc

  • branch 分支取决于使用哪个仓库库。 portsdoc 一般使用 head 分支, 而 base 最新的 -CURRENT 版本使用 head 分支, 其它 -STABLE 则各自有个分支, 8.x 使用 stable/8 、 9.x 使用 stable/9 和 10.x 使用 stable/10

  • lwcdir 是存放分支内容的目标目录, 通常使用 ports 使用 /usr/portsbase 使用 /usr/srcdoc 则使用 /usr/doc

本示例将从使用 HTTPS 协议从位于美国西部的软件仓库中签出 Ports Collection , 将本地工作副本存放到 /usr/ports 中。 如果 /usr/ports 已存, 但不是 svn 创建的, 则签出前请重命名或删除它。

# svn checkout https://svn0.us-west.FreeBSD.org/ports/head /usr/ports

因为初始化签出需要从远程仓库的获取分支的全部内容, 它可能需要一段时间。 请耐心等待。

初始化签出后, 本地工作副本更新:

# svn update lwcdir

要更新上面例子创建的 /usr/ports , 使用:

# svn update /usr/ports

更新比签出快很多, 它只传输已更改的文件。

初始签出后, 提供了另一种更新方法,它们由 /usr/ports/usr/src/usr/doc 下的 Makefile 提供的功能。 通过添加 update SVN_UPDATE 参数实现。 示例更新 /usr/src

# cd /usr/src
# make update SVN_UPDATE=yes

A.5.4. 了解更多信息

如需使用 Subversion 的其他信息, 请参阅 Subversion Book , 标题: Version Control with Subversion 或者 Subversion Documentation

本文档和其它文档可从这里下载: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

如果对于FreeBSD有问题,请先阅读 文档,如不能解决再联系 <questions@FreeBSD.org>.

关于本文档的问题请发信联系 <doc@FreeBSD.org>.