1.1 实际项目开发暴露的问题【问题产生】 问题一:当分模块开发时,多个人分别写不同的模块,那么如何把代码整合在一起呢?显然手动copy,paste面对小项目还好,面对大项目难免懵逼。 问题二:如果你说你有那个精力去copy,paste整合代码的话,但如果整合后的项目代码编译,运行出错了呢?这个错误要责任到个人话,你该去寻找谁呢? 问题三:当面对一个大型项目,假如先做了项目A,在项目A的技术上做了项目B,在项目B的技术上做了项目C。可以理解B项目是A项目的1.0版本,C项目是A项目的2.0版本。项目A,B,C都有用户在使用,此时项目A出现了BUG,那么我们需要修改项目A,B,C三个项目中的相同BUG(已经对项目A,B,C进行备份),那你就要面临对所有版本修复相同的bug错误,这就是版本迭代开发项目要面临的问题 【总结问题】 (1) 代码管理混乱。(2) 备份多个版本,占用磁盘空间大。(3) 解决代码冲突困难,容易引发BUG。 (4) 难于追溯问题代码的修改人和修改时间。(5) 难于恢复至以前的版本。无法进行权限控制。(6) 项目版本发布困难。 【问题解决】 使用SVN版本控制软件 解决问题一:团队成员每天把写的代码提交到svn,svn自动帮你整合代码 解决问题二:svn对每天提交的代码,有详细的loggin,包括提交时间,提交人,提交代码等等。还有个重要的一点,svn可以把项目恢复到错误产生之前的版本,再把项目变为错误产生之后的版本。通过这两个版本之间的一些提交loggin,来缩小排错范围 解决问题三:svn超简单解决
1.2 与github比较svn与当今的github功能相似,但也有些许差别。 (1) svn是一个服务器,离开服务器无法提交。github可以进行离线提交,任何地方都可以提交 (2) svn不能分布式管理版本控制软件。github是针对开源项目用的多,可以分布式管理版本控制软件 (3) svn适合团队开发,github适合整个宇宙一起开发 1.3 版本控制软件产生的效果openstack这个开源项目,就是通过版本控制软件,集社会之智慧来发展。 openstack是什么?平时软件运行在操作系统中,云端有自己的操作系统,hadoop就是云计算的应用软件的一种,提供了高平发分布式的平台。hadoop必须运行在云端操作系统,openstack就是云端的操作系统。相当于paas层(服务层)。云端就是通过开源来发展。
二 svn的安装
mac自带了svn,好像是因为我装了x code的原因,具体不太清楚,以后学到了linux再来补充这里。
权限分为: 认证(authentication ):身份验证 授权(authorization ):访问权限
三 服务端角度,操作仓库
2.1 检验是否安装成功svnserve --version terminal显示结果: 2.2 创建仓库2.2.1 仓库的位置环境是mac下操作,我们在/Users/apple下创建了一个svn文件夹。用来充当svn仓库。 2.2.2 创建仓库svnadmin create /Users/apple/svn/s2sh 2.2.3 库里的文件config(负责权限的文件夹): authz:授权 passwd:认证 svnserve.conf: db:存放版本控制产生的数据 hooks(钩子): 一些编辑脚本,每当我们提交到仓库时,就把记录发送到我们的邮箱,svn本身没有这个功能,我们使用脚本来提供额外的功能 locks(上锁): 仓库中有的项目有很重要的文件,对该文件上锁,其他人无法从仓库中获取该文件 2.3 启动仓库// -d:代表路径 2.4 检查是否启动仓库//监听3690端口,如果成功启动仓库,说明svn在监听该端口
三 客户端角度,操作仓库
3.1 创建用户其实就是在任意地方创建两个文件夹。来模拟两个用户,每个文件夹代表每个用户的仓库。 3.2 从仓库checkout到客户端svn checkout svn://localhost/s2sh /Users/user1 3.3 从客户端提交数据到仓库第一步:
svn add /Users/user1/a.docx 第二步:提交到对应的仓库 //一定要添加 "-m 提交信息" ,才可以区别你每次提交的行为 【说明】 可能当你添加了提交信息,还是会出现一个认证失败,也就是登录失败。因为svn默认不允许匿名用户登录,此时需要修改svnserve.conf。把anon-access = write这样修改后,才可以提交到仓库 3.4 从仓库checkout到客户端,svn checkout svn://localhost/s2sh /Users/user2 终端显示: 3.5 修改//不需要add,直接进行commit 3.6 更新svn update /Users/user2 3.7 总结
四 客户端tortoise
上面的属于客户端命令行操作,我们需要安装图形化客户端,但底层原理还是命令行式的,tortoise就是操作svn的客户端software。 4.1 64位客户端一个问题“期望文件格式是1-4之间,发现了格式6”。应该修改仓库db中的format文件。把6改文4.
五 认证与授权
开启认证与授权//匿名用户没有任何权限 anon-access = none //认证用户有写权限 auth-access = write //授权文件 password-db = passwd 认证:passwd[users] # harry = harryssecret # sally = sallyssecret 授权:authz[groups] # harry_and_sally = harry,sally # harry_sally_and_joe = harry,sally,&joe //定义s2sh组,组下有user1,user2两个用户 s2sh=user1,user2
六 冲突的解决
6.1 问题的出现加入A,B两个用户。 首先A进行add,commit操作。B进行update操作。A进行修改,commit。然后B进行修改,commit的时候,会报冲突。 6.2 图形化界面解决安装tortoise后,右键寻找edit conflict。可以进行解决了 6.3 避免问题操作前,先使用"svn update"与仓库同步
七 分支,合并,切换
在一开始我们提到的,假如先做了项目A,在项目A的技术上做了项目B,在项目B的技术上做了项目C。同时项目A,B,C都有用户在使用,此时项目A出现了BUG,那么我们需要修改项目A,B,C三个项目中的相同BUG,该问题就是项目迭代开发中会出现的问题。而且我们需要对项目A,B,C进行备份,这个问题,我就要开始用svn进行解决。 1.会有很多副本产生 2.每当项目a出现bug,修复起来很麻烦 3.不利于管理 开始进行改善
实际开发1. 创建oa仓库 2. 在仓库下创建三个文件:truck,tags,branches 3. 把正在开发的项目导入truck中 4. 把truck中的项目checkout到eclipse中 5. 开发完成的项目发布到tag中。(分支过程) 6. 继续开2.0,项目1出现了bug 7. tags检出到branches中 8. 修复branches中项目的bug
|
|