使用Subversion进行源代码管理
立即解锁
发布时间: 2025-08-25 02:38:32 阅读量: 2 订阅数: 8 

# 使用Subversion进行源代码管理
## 1. Subversion概述
Xcode Subversion客户端具备查看项目版本历史以及比较两个版本的功能。借助服务器上的标准副本(前提是服务器可访问),你能够与他人共享项目。工作流程通常为:更新工作副本、编写代码、保存并提交新的修订版本。每次更新时,你都能获取其他成员所做的全部更改。若你和同事同时对同一段代码进行了修改,在提交或更新时就会收到冲突警报。Subversion提供了解决冲突的流程,但如果团队成员能合理分配编码任务,避免相互干扰,效果会更佳。
即便你独自开展项目,采用仓库管理方式也很实用,它能让你在多台计算机上访问代码,并确保始终使用正确的版本。例如,你在家用iMac工作,在办公室用MacBook工作,通过在服务器上设置代码仓库,运用更新、编写代码、提交的方式,就能保证两台计算机上的代码同步。
## 2. 仓库选择
在规划Subversion设置时,你需要做出一个重要决策:是使用一个仓库管理所有项目,还是为每个项目单独设置一个仓库。以下是这两种方式的优缺点:
### 2.1 使用单一仓库
- **优点**:所有项目都以文件夹形式存于同一仓库中,便于高级管理,因为只需进行一次仓库设置。此后,开启新的软件项目时,只需将其导入该仓库即可。
- **缺点**:
- Subversion采用原子提交,即对任何项目中的任何文件进行更改时,都会为整个仓库创建一个新的修订版本。例如,在一个团队环境中,5名开发者在一个仓库里负责20个软件项目,你对其中一个项目的一个文件进行修改并提交,会导致整个仓库生成新的修订版本。当下一位开发者对她的代码进行修改并提交时,可能会看到修订号大幅跳跃。虽然这不会影响开发者的工作,但可能会产生大量修订号,而且单个文件的修订号可能不连续。
- 团队中的每个人都能获取每个项目的工作副本,存在有人误改项目的风险。尽管修订机制可解决此类问题,但使用单独的仓库能避免这种风险。
- 你需要严格规范提交信息的使用。因为Subversion会为每次提交事件存储提交信息,而这些事件可能涉及所有项目和所有开发者。虽然许多Subversion客户端工具(如Xcode)默认显示单个文件的历史记录,但在提交时包含详细信息仍很重要。其他客户端可能会显示整个仓库的提交信息历史视图,因此采用良好的提交信息策略对团队协作至关重要。
单一仓库方式更适合个人开发者,作者自己的项目就常采用这种方式。
### 2.2 使用独立仓库
- **优点**:具有更高的清晰度,尤其在团队协作中,你能明确谁可以访问哪些项目,修订号的变化也更清晰。
- **缺点**:工作量较大,每个项目都需要创建一个新的仓库。对于只处理少数项目的个人来说,使用独立仓库可能有些多余。
## 3. 更多信息获取
Subversion是一款复杂、强大且功能丰富的工具,有多种配置和使用方式。若你想深入了解Subversion,可参考免费在线书籍[Version Control with Subversion](http://svnbook.red-bean.com),它是关于Subversion的权威文档,虽然部分内容有一定技术性,但整体较为易懂。
## 4. 本地Subversion服务器安装
为便于学习,我们先将服务器组件安装在用于开发的同一台计算机上。尽管在实际应用中不建议这样做(例如可能会遭遇意外系统崩溃),但这是了解其工作原理的最简单方法。
### 4.1 检查Subversion版本
打开终端,输入以下命令:
```bash
svn --version
```
在撰写本文时,Mac OS X Snow Leopard包含的Subversion版本为1.6.2,不过这些说明对其他版本也适用。你会看到类似以下的输出:
```bash
$ svn --version
svn, version 1.6.2 (r37639)
compiled May 20 2009, 01:36:41
Copyright (C) 2000-2009 CollabNet.
Subversion is open source software, see http://subversion.tigris.org/
This product includes software developed by CollabNet (http://www.Collab.Net/).
The following repository access (RA) modules are available:
* ra_neon : Module for accessing a repository via WebDAV protocol using Neon.
- handles 'http' scheme
- handles 'https' scheme
* ra_svn : Module for accessing a repository using the svn network protocol.
- handles 'svn' scheme
* ra_local : Module for accessing a repository on local disk.
- handles 'file' scheme
$
```
若未看到类似输出,你可能需要从[http://subversion.tigris.org/](http://subversion.tigris.org/)下载并安装Subversion。
### 4.2 创建仓库
安装好Subversion后,你可以创建仓库。为便于说明,我们假设只设置一个仓库。使用Subversion时,需要考虑三个位置:仓库、工作副本和代码的原始位置。将现有项目直接转换为Subversion管理的项目并非最佳实践,更稳妥的做法是将它们视为不同的位置。以下是创建仓库的步骤:
1. 创建文件夹结构:
```bash
$ cd ~/Documents
$ mkdir -p subversion_work/original_projects
$ mkdir -p subversion_work/working_copy
```
2. 将项目文件夹复制到`original_projects`文件夹。例如,将第6章的`TemperatureConverter`项目文件夹复制过去。
3. 创建仓库:
```bash
$ svnadmin create ~/Documents/subversion_work/svn
```
4. 验证仓库是否创建成功:
```bash
$ svnadmin verify ~/Documents/subversion_work/svn
* Verified revision 0.
```
需要注意的是,创建Subversion仓库时,传统做法是在仓库名称下创建`branches`、`tags`和`trunk`三个顶级文件夹。`trunk`文件夹存放主要的文件夹结构,`branches`和`tags`文件夹分别存储版本历史中的分支信息和为特定文件夹分配的标签,以便于识别。为简化操作,本文未涉及这些内容,但后续添加也很简单。
仓库的文件夹结构包含配置文件和数据库文件,用于Subversion服务器管理修订版本。切勿直接对该文件夹进行更改,以免损坏存储代码历史的数据库。
## 5. 在Xcode中配置仓库
### 5.1 操作步骤
1. 打开Xcode(若未打开),关闭所有已打开的项目。
2. 找到SCM菜单,选择`Configure SCM Repositories...`。
3. 在弹出的Xcode偏好设置窗口的SCM面板中,点击`Add`按钮创建新的仓库配置。在下拉窗口中为其命名,如`Local SVN repository`。
4. 确保仓库类型设置为Subversion(Xcode也支持其他源代码管理系统,如Perforce和旧版CVS,但Subversion更为常用)。
5. 在`URL:`框中输入新仓库的URI格式位置,例如`file:///Users/ianpiper/Documents/subversion_work/svn`。按下`Tab`键,Xcode会自动填充`Scheme`和`Path`框。
6. 点击`Options`标签页,勾选`Configure SCM automatically`,这能简化项目添加到SCM时的配置过程。同时,你可以查看`Comparison Handling`选项,比较版本时,可
0
0
复制全文
相关推荐









