集中版本控制系统 (CVCS) – SVN 扩展指南

Apache Subversion (SVN) 是一种集中式版本控制系统 (CVCS),在 21 世纪初非常流行,至今仍在许多项目中使用,例如 WordPress.org。它将完整的版本历史记录存储在中央服务器上,而开发人员则在本地副本上工作。更改会保存回中央存储库,以使每个人的工作保持同步。

虽然 Git 现在是行业标准,但 SVN 对于许多较旧和大型项目仍然很重要,因为它简单且可靠。

为什么使用 SVN?

在需要集中控制或旧系统依赖集中控制的情况下,SVN 尤其有用。以下是一些主要功能:

  • 原子提交:确保提交中的所有更改都一起应用,从而降低部分更改的风险。
  • 目录版本控制:不仅跟踪文件的更改,还跟踪目录结构的更改。
  • 全面的历史记录:维护详细的变更日志,以便进行可靠的审计。
  • 访问控制:允许细粒度地控制谁可以读取或写入存储库的特定部分。
  • 仍在使用 SVN 的项目

    几个著名的项目继续使用 SVN:

  • WordPress.org:核心 WordPress 软件、插件和主题仍通过 SVN 进行管理。开发人员通过 SVN 存储库提交补丁和更新。
  • Apache 项目:许多 Apache 软件基金会项目使用 SVN 进行代码版本控制。
  • Blender(Git 之前):这款流行的 3D 建模软件在转换到 Git 之前使用了 SVN。
  • SVN 入门

    以下是如何通过实用命令开始使用 SVN:

    步骤1:安装SVN

  • Windows:从 CollabNet Subversion 下载安装程序。
  • macOS:使用 Homebrew 安装:
  • brew install subversion
  • Linux:使用包管理器安装:
  • sudo apt-get install subversion

    第 2 步:检出存储库

    要开始处理项目,您需要将存储库的副本**签出**到本地机器。

    svn checkout https://example.com/svn/repository-name

    这将下载项目文件并创建工作目录。

    步骤 3:更新本地副本

    在进行更改之前,请确保您的本地副本是最新的:

    svn update

    此命令将您的工作目录与服务器上的最新更改同步。

    步骤 4:添加新文件或目录

    如果创建新文件或目录,则必须将其明确添加到 SVN:

    svn add filename
    svn add directory-name

    步骤 5:提交更改

    完成更改后,您需要将其提交到存储库:

    svn commit -m "Commit message describing your changes"

    步骤 6:查看更改历史记录

    要查看对存储库所做的所有更改的日志,请使用:

    svn log

    步骤 7:恢复更改

    如果你犯了错误,你可以撤销更改:

    svn revert filename

    要还原工作目录中的所有更改:

    svn revert -R .

    第 8 步:解决冲突

    当两个人编辑同一个文件时,可能会发生冲突。SVN 会在文件中标记冲突部分。手动解决冲突,然后将其标记为已解决:

    svn resolve --accept mine-full filename

    步骤 9:删除文件或目录

    要删除文件或目录,请使用:

    svn delete filename

    提交删除:

    svn commit -m "Removed unused file"

    高级 SVN 命令

  • 分支:创建一个分支来开发新功能:
  • svn copy https://example.com/svn/repository/trunk https://example.com/svn/repository/branches/new-feature
  • 切换分支:将你的工作目录切换到不同的分支:
  • svn switch https://example.com/svn/repository/branches/new-feature
  • 合并分支:将分支中的更改合并回主干:
  • svn merge https://example.com/svn/repository/branches/new-feature
  • 导出干净副本:导出没有版本控制元数据的项目副本:
  • svn export https://example.com/svn/repository/trunk

    SVN 最佳实践

  • 提交小更改:避免将不相关的更改捆绑到单个提交中。较小的提交更易于审查和管理。
  • 编写描述性的提交信息:清楚地解释您所做的更改以及原因。
  • 频繁更新:定期更新您的工作副本以避免与他人所做的更改发生冲突。
  • 备份存储库:定期备份中央存储库以防止服务器故障。
  • 使用访问控制:限制对存储库关键部分的写访问,以防止意外更改。
  • 为什么要学习 SVN?

    即使你主要使用 Git,了解 SVN 也很有价值,因为:

  • 许多遗留系统仍然依赖 SVN。
  • 它提供了有关集中式工作流程如何运作的见解,这有助于理解混合系统。
  • 像 WordPress.org 这样的开源项目要求贡献者使用 SVN。
  • SVN 与 Git:主要区别

    对于使用集中式工作流或需要目录版本控制的项目来说,Subversion (SVN) 是一款强大而可靠的工具。如果您正在开发 WordPress.org 等 SVN 项目或处理较旧的系统,那么学习 SVN 对任何开发人员来说都是一项有用的技能。