一、使用环境
要想利用SVN管理源代码,必须得有两套环境:服务器和客户端
服务器:
-用于存储客户端上传的源代码
- Mac已经自带了SVN服务器
-大部分情况下,开发人员不必亲自搭建SVN服务器
客户端:
-上传本地的源代码到服务器,或者更新服务器的代码到本地,保持同步
- 可以在Mac上使用命令行、Cornerstone、Xcode
-我们要做的就属于客户端这个角色
二、配置SVN服务器
1. 因为Mac已经自带了svn服务器,我们需要配置一下,不需要搭建,打开终端,创建一个mycode仓库,输入指令(注意:路径在哪都可以)
svnadmin create /Users/apple/svn/mycode
注意: 其中apple,svn,code都是我们自己创建的目录.执行成功后,会发现mycode目录下出现了下面的结构:
2: 配置svn的用户权限
主要修改/svn/mycode/conf目录下的三个文件:authz, passwd,svnserve.conf
1):首先打开svnserve.conf,将下列配置项前面的#和空格都去掉,再将anon-access = read改为anon-access = none,这样进制匿名访问,需要账号和密码才可以访问.
2):打开passwd,在[users]下面添加账号和密码.
账号是zy,密码是123
账号是cy,密码是456
3):打开authz,配置用户组合权限
我们可以将在 passwd 里添加的用户分配到不同的用户组里,以后的话,就可以对不同用户组设置不同的权限,没有必要对每个用户进行单独设置权限。
svnserve -d -r /Users/apple/svn
三、使用svn客户端功能
前提: 由于没有多台电脑进行演示,在桌面创建一个文件夹为SVN演练,并且在文件夹内部创建二个文件夹,一个为经理的文件夹,一个为朝阳,每个文件夹代表一台电脑,目前先让这两个人进行多人开发.
在项目经理的目录下: 创建main.m文件,可以通过命令行touch main.m创建
svn import /Users/sunny/Desktop/SVN演练/项目经理 svn://localhost/mycode/QQ --username=zy --password=123 -m "初始化导入"
PS:将/Users/sunny/Desktop/SVN演练/项目经理中的所有内容,上传到服务器 mycode仓库的 QQ目录下,后面双引号中的"初始化导入"是注释
svn checkout svn://localhost/mycode/QQ --username=zy --password=123
此时就把服务器中的数据给下载到本地了.
3. 朝阳开发完毕后提交项目到服务器
把内容修改后, svn status来查看项目的状态,然后使用下面命令提交项目到服务器
svn commit -m “QQ项目开发完毕”
4. 项目经理下载项目(因为项目经理还没有checkout,只需要checkout一次,以后都update) 首先定位到项目经理路径下
svn checkout svn://localhost/mycode/QQ --username=zy --password=123
5. 项目经理更新项目并提交到服务器
此时开发人员朝阳,不用checkout从服务器下载了,因为此时已经在svn的管理之下,只需要使用
svn update更新项目即可!
7. 总结所有文件状态(描述文件被添加/删除/修改)
1.' '没有修改
2.'A'被添加到本地代码仓库
3.'C' 冲突
4.'D' 被删除
5.'I' 被忽略
6.'M' 被修改
7.'R' 被替换
8,'?' 文件没有被添加到本地版本库内,不在SVN的管理之下
9.'!' 文件丢失或者不完整(不识别该文件)
10.'~' 受控文件被其他文件阻隔
11.'U' 本地有文件的情况下更新最新的代码到本地
12.'G' 产生冲突后,更新操作去解决冲突,相当于进行合并
8. main.m不在svn的管理之下,在终端输入以下命令,将mian.m添加到svn的管理之下
svn add main.m
总结:
使用自带的svn服务器
1. 创建一个仓库
svnadmin create /Users/apple/svn/mycode
2. 配置完成后,启动SVN服务
svnserve -d -r /Users/apple/svn
3. 本地上传项目到服务器
svn import /Users/sunny/Desktop/SVN演练/项目经理 svn://localhost/code/QQ --username=zy --password=123 -m "初始化导入"
将 /Users/sunny/Desktop/SVN演练/项目经理 中的所有内容,上传到服务器 mycode 仓库的 QQ 目录下,后面双引号中的"初始化导入"是注释
4. 从服务器上的代码下载到本地
svn checkout svn://localhost/mycode/QQ --username=zy --password=123 /Users/sunny/Desktop/SVN演练/朝阳
5. 项目经理下载项目(因为项目经理还没有checkout,只需要checkout一次,以后都update)
svn checkout svn://localhost/mycode/QQ --username=zy --password=123 /Users/sunny/Desktop/SVN演练/项目经理
6. 当已经checkout后,后面只需要svn update即可
一.所用到的命令行
1.svn checkout 服务器地址 --username=mgr --password=mgr :将服务器所有内容下载到本地,包含.svn
2.svn status:查看在svn工作目录下的所有文件状态
3.svn add:将svn工作目录下面没有被添加到svn管理之下的文件统统添加进去
4.svn commit -m "注释" 文件名 :将指定文件上传到服务器(注释必须写,文件名如果不写,则将在svn本地版本库中所有没上传到服务器的文件或代码上传到服务器)
5.touch main.m:创建main.m文件
二.注意点补充
1.不要删除.svn文件夹,也不要修改里面的内容,否则就不在svn的管理之下了
2.这节内容中,在公司中常用的命令为svn commit,修改或者添加代码都需要上传到服务器
3.svn checkout只需要做一次就可以了
4.svn add:在开发中当使用xcode创建项目后,创建的文件就被直接添加到svn的管理之下了,相当于做了一次svn add 操作.不过svn add命令当在添加静态库到项目中后还是必须用到的(后面的章节会演示)