Cornerstone + SVN 完整教程:从入门到精通
Cornerstone 是一款在 macOS 平台上非常流行的、功能强大的 SVN 客户端图形化工具,它将复杂的命令行操作转化为直观的拖拽和点击,极大地提高了团队协作和版本控制的效率。

目录
- 第一部分:准备工作
- 1 安装 Cornerstone
- 2 获取 SVN 仓库地址
- 第二部分:首次使用与仓库连接
- 1 启动 Cornerstone 并配置身份
- 2 连接 SVN 仓库(检出/Checkout)
- 第三部分:核心日常操作
- 1 更新/Update:获取最新代码
- 2 添加/Add:将新文件纳入版本控制
- 3 修改与提交/Commit:保存你的工作
- 4 查看差异/Diff:对比文件变更
- 5 解决冲突/Resolve Conflicts
- 第四部分:分支与标签管理
- 1 创建分支
- 2 切换分支
- 3 合并分支
- 4 创建标签
- 第五部分:查看历史与版本回滚
- 1 浏览项目历史
- 2 查看特定文件的修改历史
- 3 回滚文件到历史版本
- 第六部分:高级技巧与最佳实践
- 1 忽略文件(.gitignore 的 SVN 版本)
- 2 使用外部差异工具(如 Kaleidoscope)
- 3 常见问题与解决方案
第一部分:准备工作
在开始之前,请确保你已经具备以下条件:
1 安装 Cornerstone
- 购买与下载:Cornerstone 是一款付费软件,你需要先到其官方网站 zennaware.com/cornerstone/ 购买许可证并下载安装包。
- 安装:将下载的
.dmg文件挂载,将 Cornerstone 拖拽到Applications文件夹即可。 - 启动:首次启动时,会提示你输入购买时注册的邮箱和许可证密钥进行激活。
2 获取 SVN 仓库地址
你需要从你的 SVN 服务器管理员那里获取仓库的 URL,通常看起来像这样:
http://svn.example.com/project/trunkhttps://svn.yourcompany.com/your-projectsvn+ssh://user@svn.example.com/project
这个 URL 是你连接到仓库的“门牌号”。
第二部分:首次使用与仓库连接
1 启动 Cornerstone 并配置身份
- 打开 Cornerstone。
- 点击菜单栏的
Cornerstone->Preferences...(或使用快捷键 )。 - 在弹出的偏好设置窗口中,选择
Accounts标签页。 - 点击左下角的 号,添加一个新的 SVN 账户。
- Name:给这个账户起一个你自己的名字,方便识别("公司 SVN")。
- URL:填入你从管理员那里获取的 SVN 仓库地址。
- Authentication:根据你的服务器配置选择认证方式。
- None:匿名访问(不常见)。
- Username/Password:最常见的用户名密码登录。
- SSH Key:如果你使用 SSH 密钥认证,需要配置好密钥并指定路径。
- 填写完毕后,点击
Test Connection确保可以成功连接到服务器,然后点击Save。
2 连接 SVN 仓库(检出/Checkout)
“检出”操作相当于将远程仓库的完整副本下载到你的本地电脑上。

- 在 Cornerstone 左侧的
Repositories列表中,找到你刚刚添加的仓库账户,点击展开它。 - 你会看到仓库的目录结构,通常包含
trunk(主干)、branches(分支)、tags(标签)等。 - 找到你想要开发的工作目录(通常是
trunk),右键点击它,选择Checkout...。 - 在弹出的窗口中:
- Local Path:选择一个本地文件夹来存放项目代码,建议选择一个你容易找到的位置,如
~/Documents/Projects/MyProject。 - Options:可以保持默认。
- Local Path:选择一个本地文件夹来存放项目代码,建议选择一个你容易找到的位置,如
- 点击
Checkout,Cornerstone 会开始从服务器下载所有文件和版本历史,下载完成后,你选定的本地路径就会被添加到左侧的Working Copies列表中。
第三部分:核心日常操作
假设你已经成功检出了一个项目,现在开始日常开发。
1 更新/Update:获取最新代码
在开始你的工作之前,强烈建议先执行更新,以确保你是在最新的代码基础上进行修改,避免不必要的冲突。
- 在左侧
Working Copies中,右键点击你的本地项目。 - 选择
Update,或者直接在项目文件列表的空白处右键选择Update。 - Cornerstone 会从服务器拉取所有最新的更改并合并到你的本地副本。
2 添加/Add:将新文件纳入版本控制
当你创建了新的文件或文件夹(如一个新功能的源代码文件),SVN 默认不会跟踪它,你需要手动将其“添加”到版本控制中。
- 在 Finder 中,将新文件/文件夹复制到你项目的本地文件夹中。
- 切换回 Cornerstone,你会看到左侧的文件列表中出现了新文件,并且它的状态是 (未版本控制)。
- 选中这个新文件,右键点击,选择
Add,或者直接拖拽文件到右下角的Incoming或Outgoing区域,Cornerstone 会提示你添加。 - 文件的状态会变为 A (已添加),但这只是暂存,下一步才是真正提交。
3 修改与提交/Commit:保存你的工作
这是最核心的操作,将你的修改“上传”到服务器。

- 修改文件:在 Cornerstone 中双击文件(如果配置了关联的编辑器)或在 Finder 中用你喜欢的编辑器修改文件。
- 查看修改:回到 Cornerstone,你会看到被修改的文件状态变为 M (已修改)。
- 准备提交:
- 方法一(推荐):在文件列表的空白处右键,选择
Commit...。 - 方法二:直接拖拽所有状态为 M 或 A 的文件到右下角的 Outgoing 区域。
- 方法一(推荐):在文件列表的空白处右键,选择
- 填写提交信息:
- 在弹出的
Commit窗口中,左侧会列出你即将提交的文件。 - 在右侧的 Message 框中,清晰、简洁地描述你这次做了什么修改。"feat: 添加用户登录功能" 或 "fix: 修复了首页按钮样式问题",好的提交信息对团队协作至关重要。
- 在弹出的
- 提交:点击
Commit按钮,Cornerstone 会将你的修改发送到服务器,完成后,文件状态会恢复为空白(表示本地与服务器同步)。
4 查看差异/Diff:对比文件变更
在提交之前,你想看看具体修改了什么内容?
- 在文件列表中,右键点击一个状态为 M 的文件。
- 选择
Diff。 - Cornerstone 会打开一个对比窗口,左边是你的本地修改版本,右边是服务器上的最新版本,所有增删改的地方都会用不同颜色高亮标记,非常直观。
5 解决冲突/Resolve Conflicts
当两个人同时修改了同一个文件的同一行时,其中一个人先提交成功,另一个人在提交时就会遇到冲突。
- 冲突发生:当你尝试提交一个与他人修改过的文件时,提交会失败,Cornerstone 会提示你存在冲突。
- 标记冲突:回到 Cornerstone,你会看到冲突的文件状态变为 C (Conflict)。
- 解决冲突:
- 双击冲突文件,Cornerstone 会打开一个 3-way Merge Editor(三路合并编辑器)。
- 这个编辑器会清晰地展示:
- Yours:你的本地修改。
- Theirs:别人的修改。
- Base:你们共同的祖先版本。
- 你需要仔细审查,手动决定保留哪些修改,删除哪些修改,或者如何将两者融合,编辑器通常会提供合并工具帮助你。
- 标记为已解决:当你手动编辑完文件,解决了所有冲突后,必须告诉 SVN“冲突已经解决”。
- 在 Cornerstone 中,右键点击该文件,选择
Mark as Resolved。
- 在 Cornerstone 中,右键点击该文件,选择
- 再次提交:现在文件状态变为 M (已修改),你可以再次执行
Commit操作,将解决冲突后的版本提交到服务器。
第四部分:分支与标签管理
1 创建分支
分支用于开发独立的功能或修复 Bug,不会影响主分支。
- 在左侧
Repositories中,找到你的仓库。 - 右键点击
trunk(或你希望基于哪个版本创建分支),选择Branch...。 - 在弹出的窗口中:
- To Path:输入新分支的路径,
branches/new-feature-user-profile。 - From Path / Revision:选择你要基于的源路径和版本(通常是
trunk的最新版本)。 - Create Copy:确保勾选此项。
- To Path:输入新分支的路径,
- 点击
Branch,分支就在服务器上创建好了。
2 切换分支
你想在另一个分支上工作?
- 在左侧
Working Copies中,右键点击你的本地项目。 - 选择
Switch...。 - 在弹出的窗口中:
- To URL:输入你想要切换到的分支 URL,
http://svn.example.com/project/branches/new-feature-user-profile。
- To URL:输入你想要切换到的分支 URL,
- 点击
Switch,Cornerstone 会将你的本地工作目录“切换”到新的分支,下载该分支的文件,完成后,你就可以在这个分支上开发了。
3 合并分支
当新功能开发完成,需要合并回 trunk 时。
- 确保你当前在
trunk分支上:通过Switch切换到trunk。 - 右键点击你的本地项目,选择
Merge...。 - 在合并向导中:
- From:选择要合并的源分支 URL (
branches/new-feature-user-profile)。 - To:选择合并的目标 URL (通常是
trunk)。 - Range:选择合并整个分支的修改。
- From:选择要合并的源分支 URL (
- 按照向导提示完成操作,合并后,
trunk的文件会被修改,你需要像往常一样Commit这次合并。
4 创建标签
标签用于为项目的重要版本(如 V1.0, V2.1)创建一个“快照”。
- 操作与创建分支几乎完全相同。
- 在
Repositories中,右键点击trunk(或任何你想要打标签的路径),选择Branch...。 - To Path:输入标签路径,
tags/v1.0-final。 - 关键区别:创建标签后,绝对不要在标签目录下进行任何修改或提交,它只是一个只读的副本。
第五部分:查看历史与版本回滚
1 浏览项目历史
- 在
Repositories中,右键点击一个文件夹或文件,选择Browse Repository。 - 这会打开一个浏览器窗口,你可以像在 Finder 中一样浏览仓库的整个历史版本,并查看每个版本是谁提交的、提交了什么。
2 查看特定文件的修改历史
- 在
Working Copies或Repository Browser中,右键点击一个文件。 - 选择
Show Log。 - 你会看到一个时间线,列出了该文件的所有修改记录,你可以点击任意一个记录,查看当时的详细信息。
3 回滚文件到历史版本
如果你不小心提交了错误的代码,需要将某个文件恢复到之前的版本。
- 在
Show Log窗口中,找到你想要回滚到的那个历史版本记录。 - 右键点击该记录,选择
Update Working Copy to Revision...。 - 在弹出的窗口中,选择
This item only(仅此文件) 或This item and all children(此文件及其子目录)。 - 点击
Update,Cornerstone 会将你的本地文件替换为历史版本。 - 文件状态变为 M,你需要
Commit这次“回滚”操作,将正确的版本覆盖掉错误的版本。
第六部分:高级技巧与最佳实践
1 忽略文件
有些文件不需要纳入版本控制,如编译产物、本地配置文件、IDE 缓存等。
-
在
Working Copies中,右键点击你的项目。 -
选择
Reveal in Finder。 -
在项目根目录下,创建一个名为
svn:ignore的无扩展名文件。 -
用文本编辑器打开它,在每一行写入你想要忽略的文件或文件夹模式,格式同
.gitignore。# 忽略所有 .log 文件 *.log # 忽略 dist 文件夹 /dist/ # 忽略 IDEA 项目配置文件 .idea/ -
保存文件后,回到 Cornerstone,你会看到
svn:ignore文件本身的状态是 ,右键点击它,选择Add,Commit,这样,所有匹配这些模式的文件和文件夹就都会被 SVN 忽略了。
2 使用外部差异工具
Cornerstone 自带的差异工具不错,但如果你更喜欢 Kaleidoscope、Araxis Merge 或 Beyond Compare,可以配置 Cornerstone 调用它们。
- 打开
Cornerstone->Preferences...。 - 选择
Diff/Merge标签页。 - 在
External Diff Tool下拉菜单中,选择你已安装的工具,如果列表中没有,可以点击Choose...手动指定应用程序。
3 常见问题与解决方案
- 问题:提交时提示 "Aborting commit: '/path/to/file' remains in conflict"
解决:说明你还有文件未解决冲突,找到状态为 C 的文件,
Mark as Resolved后再提交。 - 问题:更新或提交时提示 "Entry's schedule add ... is missing or invalid" 解决:通常是文件名包含中文或特殊字符,导致 SVN 无法正确处理,建议使用英文命名文件和文件夹。
- 问题:如何删除一个文件或文件夹?
解决:在 Cornerstone 中右键点击要删除的文件/文件夹,选择
Delete,这会将其从版本控制中移除,提交后,其他成员更新也会被删除。
通过这份教程,你应该已经掌握了 Cornerstone 的核心用法,能够独立完成日常的 SVN 版本控制操作。
核心工作流回顾:
- 更新:
Update-> 获取最新代码。 - 开发:修改文件、
Add新文件。 - 检查:使用
Diff查看修改。 - 提交:
Commit并填写清晰的提交信息。 - 冲突:遇到
Conflict时,手动解决并Mark as Resolved。
SVN 和 Cornerstone 是强大的工具,遵循良好的工作流程(如频繁更新、清晰的提交信息、及时解决冲突)能让你的团队协作更加顺畅高效,祝你使用愉快!
