您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
 
   
 
 
     
   
 订阅
  捐助
Android应用开发基础之十二:版本控制
 
作者:McCa 来源:cnblogs 发布于: 2016-5-9
  3224  次浏览      16
 

为什么需要版本控制?

场景1:

1.你的代码正常工作

2.你改了其中的几行代码

3.程序出了问题

4.你把代码改回来

5.程序还是不能正常工作——为什么?

场景2:

1.你的程序昨天还能正常运行

2.昨天晚上你修改了很多内容,做了很大的改进

3.但是目前程序还不能正常运行

4.客户今天要看你程序演示的demo

场景3:

1.第一天客户要求你写一个进度条对话框来显示进度

2.第二天客户觉得对话框不好看,用进度条显示进度

3.第三天客户又觉得还是对话框好看,重新用对话框

场景4:

1.有人在代码里面做了手脚,找出来这个人

2.程序员不承认这是自己写的代码

场景5:

1.代码拥有者权限

场景6:

1.你改了代码的一部分,程序可以正常工作

2.你同事改了代码的一部分,程序也可以正常工作

3.你把你们的改动合并在一起,程序不正常工作了

4.到底是代码那些地方发生了变化?

5.什么变化让代码不能正常工作了?

6.我如何跟同事一起协同的开发项目?

场景7:

1.项目管理,工作量统计

常见版本控制软件

1.CVS :基本被SVN取代。CVS是一个C/S系统,是一个常用的代码版本控制软件。主要在开源软件管理中使用。与它相类似的代码版本控制软件有subversion。多个开发人员通过一个中心版本控制系统来记录文件版本,从而达到保证文件同步的目的。CVS版本控制系统是一种GNU软件包,主要用于在多人开发环境下的源码的维护。但是由于之前CVS编码的问题,现在大多数软件开发公司都使用SVN替代了CVS。

2.SVN :目前使用最常用的主流版本控制软件。

3.ClearCase :比较大型的版本控制软件。

4.VSS :Windows平台开发最常用的。

5.GIT:公司做项目的话用的不是很多。用于 Linux内核开发的版本控制工具,比如Android的源码就是用GIT做版本控制的。

SVN

svn简介:

Svn(Subversion)是近年来崛起的版本管理工具,在当前的开源项目里(J2EE),几乎95%以上的项目都用到了 SVN。Subversion 项目的初衷是为了替换当年开源社区最为流行的版本控制软件CVS,在CVS的功能的基础上有很多的提升同时也能较好的解决CVS系统的一些不足。

什么是SVN服务器:

SVN分为服务器端和客户端。服务器端运行在某一台服务器或者电脑上。服务器端通过配置文件管理用户名 密码 的配置,以及他们对软件项目目录的访问权限配置。客户端一般集成在 软件开发人员的开发工具上,如eclipse 还可以使用 类似于  TortoiseSVN 的客户端软件访问 SVN 服务器,提交代码,合并代码等操作。

SVN服务器端安装

VisualSVN是一款图形化svn服务器。官网

http://www.visualsvn.com/server/

下载地址:

http://www.visualsvn.com/server/download/

搭建svn服务器,安装步骤见我的另外一篇博文:如何搭建SVN服务器,详细安装步骤。

TortoiseSvn客户端

TortoiseSVN 是svn版本控制系统的一个免费开源客户端,它是svn版本控制的 Windows 扩展。可以使你避免使用枯燥而且不方便的命令行。它完全嵌入 Windows Explorer,使用时只需在正常的窗口里点击右键操作就可以了。

下载安装地址

http://tortoisesvn.net/downloads

TortoiseSvn的安装,见我的另外一篇博文:TortoiseSvn的安装过程详解

SVN插件:subclipse

eclipse上可以通过安装svn插件的方式实现代码的管理,eclipse中最常使用的SVN插件是subclipse。

subclipse官网:

http://subclipse.tigris.org

SVN安装教程见,Mac下eclipse安装SVN插件。

SVN最佳实战

1.单用户版本控制

2.版本库的备份和还原

3.多用户权限控制

4.多用户版本控制

5.多用户冲突合并

6.SVN提交代码的规范

7.采用svn管理android项目

8.常见ignore文件类型

SVN图标详解(TortoiseSVN图标介绍:)

 

l一个新检出的工作复本使用如下绿色的对勾重载。表示Subversion状态正常。

在你开始编辑一个文件后,状态就变成了已修改,而图标重载变成了红色感叹号。通过这种方式,你可以很容易地看出哪些文件从你上次更新工作复本后被修改过,需要被提交。

l如果在提交的过程中出现了冲突,图标变成黄色感叹号。

如果你给一个文件设置了svn:needs-lock属性,Subversion会让此文件只读,直到你获得文件锁。只读文件具有这个重载图标来表示你必须在编辑之前先得到一个锁。

如果你拥有了一个文件的锁,并且Subversion状态是正常,这个重载图标就提醒你如果不使用该文件的话应该释放锁,允许别人提交对该文件的修改。

这个图标表示当前文件夹下的某些文件或文件夹已经被计划从版本控制中删除,或是该文件夹下某个受控的文件丢失了。容易引起误解,新版本客户端不常见了。

加号告诉你有一个文件或是目录已经被计划加入版本控制。

 

Eclipse 中SVN插件资源同步符号说明

1.灰色向右箭头:本地修改过

2.蓝色向左箭头:SVN上修改过

3.灰色向右且中间有个加号的箭头:本地比SVN上多出的文件

4.蓝色向左且中间有个加号的箭头:SVN上比本地多出的文件

5.灰色向右且中间有个减号的箭头:本地删除了,而SVN上未删除的文件

6.蓝色向左且中间有个减号的箭头:SVN上删除了,而本地未删除的文件

7.红色双向箭头:SVN上修改过,本地也修改过的文件

 

Git

Git简介

 

Git是用于Linux内核开发的版本控制工具。与CVS、Subversion一类的集中式版本控制工具不同,它采用了分布式版本库的作法,不需要服务器端软件,就可以运作版本控制,使得源代码的发布和交流极其方便。Git的速度很快,这对于诸如Linux内核这样的大项目来说自然很重要。

Windows下Git的安装

1.msysgit是Windows版的Git,提供了命令行操作

下载地址:http://msysgit.github.io/

Git的安装,见我的另外一篇博文:Git安装图解

2.TortoiseGIT 是Git版本控制系统的一个免费开源客户端,它是git版本控制的 Windows 扩展。可以使你避免使用枯燥而且不方便的命令行。它完全嵌入 Windows Explorer,使用时只需在正常的窗口里点击右键操作就可以了。

下载地址:

https://code.google.com/p/tortoisegit/

TortoseGit的安装,见我的另外一篇博文 TortoiseGIT的安装过程详解

Git的优势

分布式,强调个体

公共服务器压力和数据量都不会太大

速度快、灵活

任意两个开发者之间可以很容易的解决冲突

离线工作

Git基本交互流程图

 

开源项目工作流程图

Git最佳实战

单用户本地Git仓库创建和使用

多用户远程Git仓库创建和使用

Git补丁patch的创建

Github的使用

 

开源项目获取的方法

http://www.github.com   git

http://code.google.com  svn

 

 

 

   
3224 次浏览       16
 
相关文章

手机软件测试用例设计实践
手机客户端UI测试分析
iPhone消息推送机制实现与探讨
Android手机开发(一)
 
相关文档

Android_UI官方设计教程
手机开发平台介绍
android拍照及上传功能
Android讲义智能手机开发
相关课程

Android高级移动应用程序
Android系统开发
Android应用开发
手机软件测试
最新课程计划
信息架构建模(基于UML+EA)3-21[北京]
软件架构设计师 3-21[北京]
图数据库与知识图谱 3-25[北京]
业务架构设计 4-11[北京]
SysML和EA系统设计与建模 4-22[北京]
DoDAF规范、模型与实例 5-23[北京]

android人机界面指南
Android手机开发(一)
Android手机开发(二)
Android手机开发(三)
Android手机开发(四)
iPhone消息推送机制实现探讨
手机软件测试用例设计实践
手机客户端UI测试分析
手机软件自动化测试研究报告
更多...   


Android高级移动应用程序
Android应用开发
Android系统开发
手机软件测试
嵌入式软件测试
Android软、硬、云整合


领先IT公司 android开发平台最佳实践
北京 Android开发技术进阶
某新能源领域企业 Android开发技术
某航天公司 Android、IOS应用软件开发
阿尔卡特 Linux内核驱动
艾默生 嵌入式软件架构设计
西门子 嵌入式架构设计
更多...