iOS版本管理之SVN
一、基本使用
1. 常用基础命令
- svn checkout : 将服务器代码完整的下载到本地
- svn commit : 将本地修改的内容(可运行版本),提交到服务器
- svn update : 将服务器最新的代码下载带本地
2. SVN使用环境
- 要想利用SVN管理源代码,必须得有2套环境:
- 服务器:
- 用于存储客户端上传的源代码
- 可以在Windows上安装Visual SVN Server
- 大部分情况下,公司的开发人员不必亲自搭建SVN服务器
- 客户端
- 上传本地的源代码到服务器,或者更新服务器的代码到本地,保持同步
- 可以在Mac上使用命令行、Cornerstone、Xcode、Versions
- 开发人员就属于客户端这个角色
二、服务器端配置:Mac版
svn –version 查看本地SVN版本,没有则需要安装
brew install subversion:SVN安装
1. 创建代码仓库:用来存储客户端所上传的代码
创建svn目录:
- 使用终端或者直接在Finder中创建想要存放svn的路径,比如在当前用户目录下新建,以后可以在svn目录下创建多个仓库目录: mkdir svn
- svnadmin create /Users/你的MAC电脑的用户名/svn/projectName
不能在“/Users/用户名/别的文件夹”下面建立“/svn”,否则localhost会识别不出来,在“/Users/用户名下”建立“/svn”,再在“/svn”下建立svn库,就可以识别
2. 配置svn的用户权限
配置读写权限
用文本编辑器,打开svn/conf/svnserve.conf,将下列配置项前面的#和空格都去掉
anon-access = read: 表示匿名访问的时候是只读的;改为anon-access = none,禁止匿名访问,需要帐号密码才能访问;控制非鉴权用户访问版本库的权限,取值范围为 “write”、”read” 和 “none”。 即 “write” 为可读可写,”read” 为只读,”none” 表示无访问权限,默认值:read
auth-access = write: 控制鉴权用户访问版本库的权限。取值范围为 “write”、”read” 和 “none”。 即”write”为可读可写,”read”为只读,”none”表示无访问权限,默认值:write
password-db = passwd:访问方式密码
authz-db = authz:指定权限配置文件名,通过该文件可以实现以路径为基础的访问控制。 除非指定绝对路径,否则文件位置为相对conf目录的相对路径,默认值:authz。
添加用户
打开目录下的svn/conf/passwd文件,在[users]下面添加用户和密码,等号左边是用户名,右边是密码,需要添加新用户,就另起一行
- 配置用户组和权限
打开目录下的svn/conf/authz文件,将在passwd里添加的用户分配到不同的用户组,方便管理权限。
- 分组:在[groups]下面添加组名和用户名,多个用户之间用逗号(,)隔开,同样等号左边是组名,右边是用户名
2 .分组权限配置:使用[/]代表svn服务器中的所有资源库
- 启动svn服务器
svnserve -d -r /Users/albertyuan/svn/prectice :-r直接指定到版本库(称之为单库svnserve方式)
svnserve -d -r /Users/albertyuan/svn :指定到版本库的上级目录(称之为多库svnserve方式)
可以在mac系统自带的实用工具里面的“活动监视器”查看svn启动状态
3. 客户端链接服务器配置
启动svn
在终端输入下列指令:svnserve -d -r /Users/你电脑的用户名/svn
打开Cornerstone,点击Add Repository,如下:
4. 在SVN中存放代码
.在代码库中,新建文件夹,在cornersotone的空白处右击,出现如下信息:
弹窗中,输入文件夹名称,勾选表示创建trunk,branches,tags路径,不勾选什么都不会创建
填写修改日志后,continue
这样,文件夹就建好了。此时我们就可以往svn上传项目了。
三、svn客户端操作命令简介
- svn checkout :下载服务器的代码到本地 (简写svn co)
svn checkout https://192.168.1.106/svn/Weibo/ /Users/Documents/workspace
- 第一段路劲代表的是:代码仓库的远程地址
- 第二段路劲代表的是:将代码下载到本地的哪个路径
- 如果省略第二段路径,就下载到命令行当前所在的路径
- svn commit :将改动的文件提交到服务器(简写svn ci)
svn commit -m “修改了User.m文件” /Users/Desktop/workspace/Weibo/branches/User.m
- 路径代表的是:提交哪个文件到服务器
- 如果省略路径,就将命令行所在路径中所有改动过的文件提交到服务器
svn update :更新服务器的代码到本地 (简写svn up)
将文件恢复回退至某个版本: svn update -r 版本号 [PATH]
- 假设服务器版本是7,但是有问题(上传错误文件了),可以回退到第6个版本(确保回退版本是所需的版本):svn update -r6
- 本地更新到最新的版本(提高本地版本号,解决版本过低无法上传问题,但此时会存在有问题的文件):svn update
- 问题文件合并,格式固定:目标版本文件回退合并到指定版本的文件,解决有问题的文件:svn merge -r7:6 xxxxx.h
svn add :向本地的版本控制库中添加新文件
如果直接提交一个没有添加到本地版本控制库中的文件,会报下面的错误:lis not a working copy
svn delete、svn remove :从本地的版本控制库中删除文件(简写svn del、svn rm)
将文件从本地的版本控制库中移除:svn delete PATH 、svn remove
提交刚才的删除操作到服务器:svn commit
svn move :移动文件或者目录或文件更名
svn mkdir :创建纳入版本控制下的新目录
svn revert :撤销之前的一切修改
svn merge :将两个版本之间的差异合并到当前文件
svn info :查看文件的详细信息
svn diff :查看不同版本的区别
svn log :查看日志信息
svn list :列出版本库下的文件和目录列表
svn status :查看文件状态(简写svn st)
? :不在SVN的管理之下
A: 该文件新增并在SVN的管理之下,但是该文件在本地还没有上传到服务器中
M : 该文件在本地已经修改,未上传到服务器
D: 该文件本地已删除,但服务器依然存在,删除操作为同步到服务器中
svn help :获取帮助信息(比如svn help ci)
svn lock :加锁
svn unlock :解锁
使用问题总结:
去到公司的第一天,下载公司的代码到电脑上 : svn checkout
修改了某个早已存在的旧文件,然后提交到服务器: svn commit
提交一个自己新建的文件到服务器: svn add à svn commit
删除一个早已存在的旧文件,然后同步到服务器上: svn delete à svn commit
将其他同事提交的新代码更新到自己电脑上: svn update
版本回退
- 不小心写错了很多东西,想撤销所写的东西(还未把修改提交到服务器): svn revert path需要回退的文件路劲
- 不小心删错了文件,想把文件恢复回来(还未把删除提交到服务器): svn revert
- 不小心写错了很多东西,想撤销所写的东西(已经把修改提交到服务器): svn update -r 版本号
- 不小心删错了文件,想把文件恢复回来(已经把删除提交到服务器): svn update -r 版本号
注意:.svn这个隐藏目录记录着非常关键的信息;千万不要手工修改或删除这个 .svn隐藏目录和里面的文件! 否则将会导致本地的工作副本被破坏,无法再进行操作