这里比较抽象一点,因为网上有很多教程,就大致写一下课堂笔记好了
1 版本控制
为什么需要版本控制:
①原本正常工作的代码,修改之后再改回来程序不能正常工作
②程序昨天还能正常运行,修改了之后,今天就不能正常运行了.
代码冻结环节:当遇到重大节假日的时候,春节前一两周把代码冻结起来,不允许修改.
③客户修改需求
④有人在代码里做了手脚,程序员不承认这是自己的代码
⑤代码拥有者的权限
⑥A修改了一部分代码,B修改了一部分代码,两者分开用都可以,放在一起出BUG
⑦工作量统计
⑧项目源码版本的备份和记录
2常见版本控制软件
①CVS 05年之前用的,已经被淘汰了
②SVN 05年之后开始流行,有CVS的全部特性
③ClearCase IBM开发的,收费的,一般都是大公司用,操作复杂,容量大
④VSS 微软开发的,用的人比较少C#程序员都用的少.
⑤GIT 前面四种是集中式的,GIT是分布式的版本控制软件
3.SVN入门
3.1全称Subversion,在当前开源项目里,几乎绝大部分都使用到了SVN,初衷是为了替换当年开源社区的CVS,在CVS的基础上进行了升级与拓展.
使用SVN,必须要有SVN服务器(一般有专人管理)程序员每做完一次开发,就要把代码提交到服务器里.
SVN服务器安装:(查看对应的安装帮助文档即可)
下载地址:www.visualsvn.co/server 点击download
SVN默认端口号443(https更安全),否则为80(http)
检测SVN是否安装成功Https://127.0.0.1// 出现欢迎界面即可
arp-a 查看当前所有的ip端口号,在服务器中配置好IP地址(网络共享中配置)
额外:打开服务器控制界面
在Repositories中可以保存大量的代码,右击可以创建新的小仓库
创建时候的选项,第一个选择创建一个空仓库,然后跳到第二个界面仓库权限设置①除了自己之外别人不能访问.②所有人可以访问,③自定义
选择自定义权限,添加用户即可,然后在创建的仓库里可以选择拷贝仓库的URI路径
这个路径中https://主机名(替换成IP地址,因为主机名有时候只能局域网访问)/svn/.....
但是这样浏览器打开太麻烦,所以使用工具: TortoiseSVN,版本控制开源的客户端
SVN客户端:TortoiseSVN 下载地址http://tortoisesvn.net/downloads
在客户端打开网页输入地址即可(有对应的安装帮助文档,对照安装即可)
安装完成后需要重启电脑
4 SVN实战
4.1 单用户版本控制
①把本地的工作空间与服务器的代码仓库同步关联起来
在工作空间中右键,SVNCheckout 打开界面输入URL仓库路径即可(这里要注意不要输入主机名,而是IP地址),确认之后弹出提示,证书问题,由于是私人服务器会有证书问题,所以不用管它,然后添加用户名密码即可,执行完之后,文件夹图标会改变,同时在文件夹下会多一个.svn隐藏文件夹,记录服务器信息,认证信息,文本信息等.删除.svn可以取消同步
②不同的文件图标代表不同的状态(如果64位系统安装了32位客户端可能会出现图标丢失.)
?号图标代表版本控制器不知道文件信息.
右键文件add添加即可,变成加号图标,该文件被计划加入版本控制器.
右键绿色的提交选项可以把文件提交,里面可以写 message消息,开发的时候这个消息一定要写完整.下面的Change made 代表文件被改变的内容,会显示旧版本跟新版本.点击OK就提交成功.会显示版本,
提交完之后,该文件图标会变成对号√.代表提交成功.
在其他电脑中,创建同样文件名的文件夹,输入用户密码即可以看到自己的代码文件.
如果修改文件的内容,文件图标就会变成一个红色感叹号,提交后变成对号
如果想看文件的版本变化,右击文件TortoiseSVN>>Show log可以显示版本日志
通过右击对应的版本号,可以把它保存在本地,拿到历史的代码源文件
Author 可以看到对应提交的作者
这样就解决了前面①-④个问题
⑤问题,别的人只能查看代码,不能修改代码
4.2 备份版本控制服务器
代码仓库目录下的子仓库,复制出来即可,就可以把代码备份出来,右击代码仓库可以导入.导出就只能复制文件夹了.
5,多用户版本控制
在绑定的控件中间 右键找到Setting>>save data可以清空所有数据
当两个用户同时都有权限对这个代码仓库的同一个文件进行操作的时候,一方更新了文件内容,并提交.而另一方在没有更新文件的前提下,对文件进行了修改,也要提交的时候,就会出错:提示文件已过时,需要先更新文件.
但是更新的时候会出现conflict冲突这时候可以右击文件EditConfilct查看冲突
在处理冲突的窗口中,右击冲突的地方可以对冲突进行处理,选择处理方式,合并逻辑,修改完成后,右击选择
为了避免冲突,每次开发之前先进行update,更新一下文件,做完一个功能模块就提交一次(不要把错误的代码提交上去了).
额外:一键处理代码冲突:直接右击点击Resolve,两个修改都会保存下来
5.2 svn文件锁
右击文件点击Properties,可以给文件添加一把锁:svn:needLock 需要制定对应的解锁密匙.在添加属性的属性new里面选一个other,然后再选择锁,添加密匙,不然就是设置的可读
超级管理员可以把锁强制打开
开发中这种锁用得比较少,因为一旦被锁了,其它开发人员就不能访问,制定锁的人一旦有事,对于项目的影响很大.
5.3 SVN提交代码的原则
①先更新再提交
②多次提交,写好Message(GIT里面是强制要求写Message的)
③不要提交不能通过编译的代码,必须可以编译运行,不然会影响到它人开发
④每次提交必须书写明晰的标注
⑤提交的时候不要提交本地自动生成的文件
⑥不要提交自己不明白的代码
⑦慎用锁的功能,只有编辑哪些无法合并的文件时,才能适当的使用锁功能.
6.android下不用提交的文件夹(自动生成的都不要提交)
6.1 因为自动生成的文件提交之后,如果修改了java代码,其它自动生成的文件(.class文件之类)也会改变.
6.2 右击找到ignore list忽略选项,点击即可忽略对应文件
android项目下bin,gen 目录是自动生成的
建议不要删除文件,可能会导致svn服务器出问题,把java代码注释掉,并备注不能使用即可.
6.3插件安装:①到eclipse的dropins目录下创建一个文件夹(不要中文)把插件解压进去即可. 右击需要同步的项目,Team>>Share project设置目录即可,
②通过eclipse中插件安装也可以.
两个都可以,看个人怎么选择,目录过滤选择
7.SVN标准目录结构
7.1 Trunk:SVN目录的主分支,表示日常开发中的项目,任何时候它的代码都是罪行的,Trunk应该只用来开发将会成为你的下一个版本的重要代码
7.2 Branches:
Experimental branches 创建
Bug fix branches Bug 修复版本分支
7.3 Tags 一个Tag代表一个可用的版本,里程碑,一般做备份
实际应用,
一般的开发文件在Trunk目录下,如果这个项目确实可用,就给它转到tag里面(右击拷贝即可,相当于是在Trunk目录下创建了一个新文件夹用来保存这个可以使用的项目).
如果一个版本发生了重大BUG,就在服务器端创建一个分支文件夹(右击Repo-browser可以看到服务端的文件夹列表,可以创建文件夹,前提是有权限),在开发人员的文件夹中绑定这个Bug fix branches文件夹的路径,对其进行修改.
如果有创意,想要添加到版本里,会先放到Experimental branches 进行测试.
7.4 开源项目获取方式
http://code.google.com svn 开源项目在谷歌上的托管(放上去源代码就透明了)
所有的谷歌开源项目网址格式是http://code.google.com/p(项目简写)/项目名
droidwall 安卓下的防火墙源码,可以自己去拼接下载
项目名称.googlecode.com/svn
8 git
8.1 git简介
采用分布式版本库,不需要服务器端软件,就可以运行版本控制,使得源代码的发布和交流极其方便.分布式设计模式:自己既是服务器,又是客户端,每一个小元素都有自己的功能.就算一个小元素挂掉了,其它小元素也能正常工作,小元素指的每一台电脑.
msysgit是Windows版的Git,并提供了命令行操作
Cgwin+windows完美模拟linux命令的软件
TortoiseGit是Git版本控制系统的免费yi/ge开源的客户端
git特点:必须写注释才能提交,由于版本控制是在本地的,用户名和密码是不做校验的.
git的Commit是提交到本地的,它也有一个共享版本库,类似 SVN的服务端,通过Clone可以从中央共享版本库的数据复制到本地,本地通过PUSH可以把数据提交到共享版本库,PULL操作可以从共享版本库更新数据.
git不知道为什么在电脑上有问题安装不了,只好暂时先放弃了,svn现在用得比较多,用好它就行了