.. index:: single: 获取源, SVN检出, SVN更新, SVN还原, SVN导出 获取源 ---------- 介绍 ^^^^^^^^ 在 FPC 2.0 发布之后,项目使用 SVN 作为源码管理系统,主要原因在于方便合并分支。 在构建快照时,通过 SVN 获取源代码,fpc/ 作为根目录。也可以从主站下载归档文件 [#OBTAININGSOURCE1]_。这个归档文件每个月都在变大,现在已经有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检出 ^^^^^^^^^^ 要检出模块请使用以下命令: .. code-block:: bash :linenos: 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 是之前已检出过的目录。会自动从远程更新文件。 示例: .. code-block:: bash :linenos: 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:有关更快的解决方案,请参阅构建技巧部分。 SVN更多信息 ^^^^^^^^^^^^^^^^ 有关 FPC 和 SVN 的更多信息,请访问 http://wiki.freepascal.org/SVN_Migration。 .. [#OBTAININGSOURCE1] `2.2.x`_ 、`2.5.x开发系列`_ 。 .. _2.2.x: ftp://ftp.freepascal.org/pub/fpc/snapshot/v24/source/fpc.zip .. _2.5.x开发系列: ftp://ftp.freepascal.org/pub/fpc/snapshot/v25/source/fpc.zip