获取源¶
介绍¶
在 FPC 2.0 发布之后,项目使用 SVN 作为源码管理系统,主要原因在于方便合并分支。
在构建快照时,通过 SVN 获取源代码,fpc/ 作为根目录。也可以从主站下载归档文件 1。这个归档文件每个月都在变大,现在已经有25M了。
最好的方法是通过 SVN 获取源,它允许以增量方式将源更新到最新版本。(即第二次,它只下载变更过的文件)
SVN模块¶
FPC 和 Lazarus 源码分布在多个 SVN 模块中:
模块 |
说明 |
fpc |
核心 FPC 存储库。包含编译器,RTL,文本模式 IDE和大多数非可视库 |
fpcdocs |
FPC 文档源(LATEX 和 fpdoc XML 格式) |
fpcprojects |
不适合与FPC一起分发的项目停放在这里。(包括IRC机器人) |
fpcbuild |
包含 fpc 和 fpdocs 源代码以及安装和演示目录及用于发布包的 makefile |
lazarus |
Lazarus 项目(可视化类库 LCL 和 Lazarus IDE / RAD) |
SVN检出¶
要检出模块请使用以下命令:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | svn co http://svn.freepascal.org/svn/<模块名>/trunk <模块名>
#
# 示例:
#
# FPC
# svn co http://svn.freepascal.org/svn/fpc/trunk fpc
#
# fpcdocs
#
svn co http://svn.freepascal.org/svn/fpcdocs/trunk fpcdocs
#
# fpcprojects (没有分支,也许你不需要/trunk)
#
svn co http://svn.freepascal.org/svn/fpcprojects/trunk fpcprojects
#
# lazarus
#
svn co http://svn.freepascal.org/svn/lazarus/trunk lazarus
|
要检出分支,请使用 branches/<分支名>替换上面行中的 trunk。 例如,检出2.4分支:
svn co http://svn.freepascal.org/svn/fpc/branches/fixes_2_4 fpc-2.4.x
特定版本标记格式为 RELEASE_2_4_0,可以像这样检出:
svn co http://svn.freepascal.org/svn/fpc/tags/RELEASE_2_4_0 fpc-2.4.0
SVN更新¶
通过 SVN 获取源的优势是增量更新。SVN 非常简单,简单地用 svn up x,x 是之前已检出过的目录。会自动从远程更新文件。
示例:
1 2 3 | svn up fpc
#
svn up fpc-2.4.0
|
SVN还原¶
SVN 的新特性还原功能。在本地编辑后,更新时引发了冲突,或者你需要100%未编辑的版本,这时你需要使用 SVN 恢复功能。以保证本地副本与 SVN 服务器是同步的。
如果遇到的问题是 IRC 和邮件列表上其他人无法重现的,并且编译器是正确的,那么你应该这样做。
示例:
svn revert -R fpc
SVN导出(Win32用户请阅读)¶
导出是将本地工作副本检出。构建需要导出而不是检出的常见原因是:
你正在进行发布构建。例如:制作 RPM,deb包,freebsd 端等。
你正在构建 win32,并希望使用 make install 来安装构建,并且你需要安装示例。
Windows 上的问题是某些工具会混淆 SVN 客户端设置的只读属性。由于只是复制库文件,而不需要 SVN 管理文件,导出是最有效的方法。导出所用的时间和硬盘空间与手动复制大致相同。
导出命令格式为:
svn export SVN目录 导出存储目录
示例:
svn export d:\fpc fpcexport
或
svn export /usr/local/src/fpc fpc
如果第二个参数已存在,SVN 将拒绝执行此操作。在这种情况下,使用 force 来强制 svn 更新。
注1:我还没有测试过这个,但是在导出之前清理版本库可能会加快导出,特别是在Windows 上。
注2:有关更快的解决方案,请参阅构建技巧部分。