截至 2012 年 7 月, FreeBSD 已将所有储存 FreeBSD 源代码、 文档、 Ports Collection 的主版本控制系统更换为 Subversion ( SVN )。
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
协议。
要初始化仓库之前, 必须先安装 Subversion 。 如果 ports 树副本已建立, 则可以通过以下方法安装 Subversion :
#
cd /usr/ports/devel/subversion
#
make install clean
如果 ports 树 不可用, 可以使用预编译包安装 Subversion :
#
pkg_add -r subversion
如果使用 pkgng 作为包管理器, 则使用替换 Subversion 安装命令:
#
pkg install devel/subversion
svn
命令用来获取的源码的原始拷贝到本地目录。
这个目录中的文件称为 本地工作副本 。
如果本地目录已经存在, 但不是由 svn
创建的, 那么请重命名或删除它。
签入 (Checkout) 时, 如果非 svn
目录, 则可能出现现存文件与软件仓库相冲突的情况。
从指定的软件仓库签入, 使用:
#
svn checkout svn-mirror/repository/branch lwcdir
其中:
svn-mirror
的 URL 可以从 Subversion 镜像站 上获得。
repository
是项目仓库名称, 即: base
、
ports
或 doc
。
branch
分支取决于使用哪个仓库库。
ports
和 doc
一般使用 head
分支,
而 base
最新的 -CURRENT 版本使用 head
分支,
其它 -STABLE 则各自有个分支, 8.x
使用 stable/8
、
9.x
使用 stable/9
和 10.x
使用 stable/10
。
lwcdir
是存放分支内容的目标目录,
通常使用 ports
使用 /usr/ports
、
base
使用 /usr/src
,
doc
则使用 /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
如需使用 Subversion 的其他信息, 请参阅 “Subversion Book” , 标题: Version Control with Subversion 或者 Subversion Documentation 。
本文档和其它文档可从这里下载: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
如果对于FreeBSD有问题,请先阅读
文档,如不能解决再联系
<questions@FreeBSD.org>.
关于本文档的问题请发信联系
<doc@FreeBSD.org>.