Cornerstone使用教程

Cornerstone使用教程

1.Cornerstone简介

Cornerstone是Mac OS系统上的一款SVN管理工具,除了支持基本的SVN功能外,还能够和Xcode,BBEdit,TextMate,Coda等开发工具无缝的集成使用,其时间线功能能够非常方便的查看一个文件的历史改动情况,具有强大的合并,比较功能。

2.使用介绍

(1)添加仓库

点击界面下方的“Add Respository”按钮,也可以点击左下角的“+”按钮,在弹出的菜单中点击“Add Respository”选项

image_1

根据仓库类型点击对应的配置按钮,填写仓库信息

HTTP Server配置面板:

image_2

SVN Server 配置面板:(Tunnel:访问通道,默认不用修改)

image_3

填写完对应信息后点击“Add”按钮,如果配置信息正确仓库就会添加成功,界面左侧列表会显示添加的仓库

image_4

(这里项目中已创建好branches、tags、trunk 3个文件夹)

(2)上传文件

可以点击界面上方的Import按钮上传,或者直接拖动文件到repository的子文件夹中会弹出选项填写所在位置及名称

image_5

选择要上传的文件:

image_6

点击Import按钮后会弹出日志输入框:

image_7

填写描述信息后点击“Continue”按钮,上传成功后即可在文件夹中看到上传的文件:

image_8

(3)下载文件

下载文件分为两种:Export和Check Out

Export

Export后的项目不会与repository中的源文件相关联,是一个独立的版本,如果只是下载查看,不希望自己的修改影响到整个项目,最好选择Export。

选中左侧列表仓库或仓库中的某些文件,点击界面上方的“Export”:

image_9

在弹出的设置框填写文件名,选择导出位置等,点击Export按钮即可将对应文件下载到本地指定位置:

image_10

Check Out

Check Out下来的文件会创建一个working copy,此文件与repository中源文件相关联,当有别人修改或是自己修改时,working copy会显示修改数量,白色数量为别人修改数量,灰色数量为自己修改数量,所以如果你是项目的开发人员,可以选择check out。

选中左侧列表中的仓库,点击左上角的“Check Out”按钮

image_11

在弹出的窗口中设置文件名、检出位置等,然后点击“Check Out”按钮即可检出项目:

image_12

检出项目成功后左侧列表仓库下方会显示本地检出的工作副本:

image_13

(4)版本管理

作为开发人员,我们需要对代码进行版本控制,首先需要将代码check out到本地,当我们在working copy修改、添加、删除文件后,点击界面上方的Commit按钮即可提交代码:

image_14

点击Commit后会打开提交窗口,这里可以添加变更描述,确认变更文件:

image_15

需要注意新添加的文件如果需要提交到仓库,需要先addcommit

*丢弃修改

如果修改后的文件又想恢复到修改之前的状态,可以选中要恢复的文件点击界面上方的Revert按钮按提示操作。

*文件标识

我们可以看到有些文件后面会有一些标识,比如A、M、D、?、C等,它们表示文件的不同状态:

1
2
3
4
5
6
7
8
9
A:add,新增
C:conflict,冲突
D:delete,删除
M:modify,本地已经修改
G:modify and merGed,本地文件修改并且和服务器的进行合并
?:未跟踪文件
U:update,从服务器更新
R:replace,从服务器替换
I:ignored,忽略

*冲突文件

需要注意的是C标识的文件,通常是由于不同开发者同时修改了同一行代码然后commitsvn产生的。

原则上同一组开发人员最好不要在同一文件中进行操作,但有时候必须去其他文件中进行操作,或者是误操作,如果同时多人在同一文件的同一位置修改代码,后提交的人会出现版本冲突文件,一般会生成三个同样名称不同后缀的文件:

fileName.mine, fileName.rxxx, fimeName.rxxx

其中.mine文件是本人所做修改,两个.rxxx文件(xxx为数字),数字较小的为更改前的文件,较大的为更改后的文件,在文件中会有<<<< mine .rxxx>>>>>等字样包含起来的代码,即冲突的地方,此时请和修改此处代码的同事讨论或自己删除某部分修改文件后进行调试,修复文件。

*注意事项:

1.先更新(update)后提交,当你看到你check out下来的项目有白色圈时,说明有人已经提交了代码,这个时候,你应该先update一下,直至working copy不再显示白色圈,然后运行一下项目,确保项目没有冲突或者丢失的文件,然后在commit自己的代码,否则会造成项目中出现多处冲突或者覆盖掉别人提交的代码。

2.在项目开发阶段,最好每次开发完一个独立的功能,或者在测试阶段,解决一个bug之后再提交代码到svn,不要连续多次重复提交,造成版本过多过杂。并且每次提交时务必填写提交信息,方便查看历史版本。

(5)查看变更记录

每一次提交会创建一个新版本,在repository中会保存所有历史版本,可通过修改人及提交信息进行检索版本,所以用svn开发可以很好的控制项目出现不可解决及未知bug时代码的修复问题。

查看变更记录可以选择对应仓库点击右下角的Log按钮:

image_16

变更信息:

image_17

(6)svn ignores的使用

在项目中引入第三库,在本地运行项目,发现没有任何问题,但是提交到svn,其他人update之后,在运行项目发现报错,很有可能是静态文件没有上传到svn造成的。

点击菜单栏Cornerstone ->Preferences:

image_18

选中弹出窗口的Subversion选项:

image_19

可以看到这里默认勾选了Use default global ignores选项,版本管理会忽略方框中指定类型的文件。我们可以根据项目的实际情况,取消勾选Use default global ignores选项,自行指定需要忽略的文件。

(7) 创建分支和Tag

Subversion 有一个很标准的目录结构:

1
2
3
4
5
6
7
PROJECT
├── trunk
├── branches
└── tags
  1. trunk 为主开发目录

    中文翻译为“主干”的意思,在项目运作过程中,日常的开发和管理资料都在此目录中进行维护和更新。

  2. branches 为分支开发目录

    中文意思为“分支”,在项目运作过程中,存放阶段性成果(版本),这些阶段性成果是可维护(包括为客户定制化的版本)。

  3. tags 为存档目录

    中文意思为“标签”,此目录为一些阶段性成果进行存档。为只读目录,不允许进行修改。

创建Branch

首先选择项目所在的远程仓库,然后选择要创建分支的项目,右键选择branch或者点击界面上方的Branch:

image_20

设置分支名称和位置等信息,点击Create Branch:

image_21

填写描述信息,点击Continue:

image_22

创建Tag的方式是类似的,选择项目所在的远程仓库,然后选择要创建分支的项目,右键选择tag或者点击界面上方的tag按钮。

(8) 合并分支

如果需要将不同的分支代码合并,需要先将目标代码(合并后所在的分支)check out到本地,点击界面上方的merge按钮:

image_23

点击Sychronize Branch,选择被合并的项目(merge from,哪个分支的变更要合并到当前分支):

image_24

点击Merge Changes按钮,Mefge from分支的变更就会合并到本地,可以进行修改、解决冲突等操作后再commit代码到仓库。

参考内容

本文内容通过自行创建SVN仓库,实际操作截图及参考网络文章编写,主要参考内容包括:

CornerStone的使用

cornerstone创建分支与合并代码方法整理

Mac下的SVN客户端工具Cornerstone使用教程