关闭

Android中管理代码基本工作流程

965人阅读 评论(0) 收藏 举报
分类:

原文地址
译者:远方的自由
转载请注明出处: http://blog.csdn.net/z2066411585

描述 

管理Android代码需要使用Git(一个开源的版本控制系统)和Repo(Git上运行的Google构建的存储库管理工具)

Git

Git用在处理分布多个存储库项目中,Android使用Git进行本地操作,如本地分支,提交,差异和编辑,安装Andriod项目的挑战之一是如何最好的支持外部社区,从爱好者社区到大型OEM构建大众市场消费者设备. 我们希望组件可以被替换
并且我们希望组件在Android之外拥有更多的可能,我们首先选择了一个分布式控制系统,然后把它定位到Git.
有关Git更多的细节,参考Git Documentation

Repo

Repo会统一管理Git存储库,执行上传到 Gerrit revision control system,并自动化Android开发工作流程的部分内容. Repo并不意味要取代Git,只是为了更容易在Android上下文中使用Git,Repo命令是一个可执行的脚本,可以放在路径的任何地方,在使用Android源文件时,你可以使用Repo进行跨网络操作.
例如,使用单个Repo命令,你可以将多个存储库中的文件下载到本地工作目录.在大多数情况,你可以使用Git而不是Repo或混合Repo和Git来形成复杂的命令,然而将Repo用于基本的跨网络操作将使你的工作更加简单,有关Repo更多的细节,参见Repo Command Reference.

其他工具

其他工具包含Gerrit,一个基于Web的代码审查系统,用于使用Git项目,
Gerrit允许授权用户提交修改,鼓励更集中的使用Git,如果通过代码审查,则会自动合并.另外,Gerrit通过浏览器中并排显示更改并内嵌评论,使审阅变得更加简单

工作流程

Android 开发涉及以下基本流程:

这里写图片描述

图1: 基本Android工作流程

  1. 使用repo start 开始一个新的主分支
  2. 编辑文件
  3. 使用git add来把更改提交到暂存区
  4. 使用git commit 提交更改
  5. 使用repo upload 将更改上传到审核服务器

常见命令

在Android 代码库中使用Git和Repo包括一下常用命令

命令 描述
repo init 初始化一个新的客户端
repo sync 将客户端同步到存储库
repo start 开始一个新的分支
repo status 显示当前分支的状态
repo upload 将更改上传到审阅服务器
git add 文件添加到暂存区
git commit 提交文件到本地仓库
git branch 显示当前分支
git branch [branch] 创建一个新的分支
git checkout [branch] 将HEAD切换到指定分支
git merge [branch] 合并指定分支到当前分支
git diff 显示未跟踪更改的差异
git diff –cached 显示分阶段更改的差异
git log 显示当前分支的历史记录
git log m/[codeline].. 显示未被推送的提交

有关使用Repo下载源代码信息,参见DownloadingTheSourcehttps://source.android.com/setup/using-repo.html

同步客户端

同步所有可用项目的文件

repo sync

同步所选项目文件

repo sync PROJECT0 PROJECT1 … PROJECTN

创建主分支

每当你开始更改时,例如在开始处理错误或新功能时,在本地工作环境中创建主分支,主分支不是原始文件的副本,它是一个指向特定提交的指针,这使得创建本地分支并在它们切换是一种轻量级操作.通过使用分支,你可以将工作与其他方面分开,有关使用主分支的文章,参见 Separating topic branches

要使用Repo创建主分支,请导航到该项目运行:

repo start BRANCH_NAME
. 表示当前工作目录中的项目

验证新分支是否创建

repo status

使用主分支

将分支分配给特定的项目

repo start BRANCH_NAME PROJECT_NAME

有关所有项目的列表,参见 android.googlesource.com,如果你已经导航到项目目录,只需要一段时间来表示当前项目.
切换到本地工作环境中的另外一个分支

git checkout BRANCH_NAME

查看现有分支列表

git branch

或 

repo branches

这两个命令都返回现有分支的名单,前面加星号表示当前分支的名称

注意: 一个错误可能导致repo同步重置本地主分支,如果运行repo sync后,git分支显示*,请再次运行git checkout

添加文件

默认情况下,Git通知但不跟踪你在项目中所做的更改,为了告诉Git保存你的改变,你必须标记或分级这些改变以包含在提交中

阶段的提交:

git add

该命令接受项目目录中文件或目录的参数,尽管git add 不会简单地添加文件到git仓库,它可以用来对文件进行修改和删除

查看客户端状态

列出文件的状态:

repo status

查看未提交的编辑(没有标记为提交的本地编辑):

repo diff

查看提交的修改(找到被标记为提交的编辑),确保你在项目目录下,然后用缓存的参数运行git diff

cd ~/WORKING_DIRECTORY/PROJECT
git diff –cached

未提交和已提交的编辑
图2:未提交和已提交的编辑

提交更改

提交是Git中修订控制的基本单元,由整个项目的目录结构和文件内容组成,在Git中创建一个提交:

git commit

当提示你提交消息时,请为提交给AOSP的更改提供简短描述,如果不添加提交描述,则提交终止:

上传更改到Gerrit

更新到最新版本,然后上传更改:

repo sync
repo upload

此命令返回你已提交的更改列表,并提示你选择要上传到审阅服务器的分支,如果只有一个分支,你会看到一个简单的y/n提示

解决同步冲突

如果repo sync 命令返回同步冲突:

1.查看未合并的文件,(status code = U)
2.根据需要编辑冲突区域
3.切换到相关的项目目录,添加并提交受影响的文件,然后重新设置更改:

git add .
git commit
git rebase --continue

4.rebase完成后,再次启动整个同步:

repo sync PROJECT0 PROJECT1 … PROJECTN

清理客户端

合并更改到Gerrit后,更新你的本地工作目录,然后使用repo prune安全删除旧的主分支

repo sync
repo prune

删除客户端

由于所有信息都储存在客户端中,因此只需从文件系统中删除目录即可

rm -rf WORKING_DIRECTORY

永久删除客户端会删除你未上传用于审核的所有更改

1
0
查看评论

hadoop工作流程分析

到目前为止,我们针对wordcount例子,介绍了一个Job从创建,到设置参数,到执行的整个过程。但是hadoop的执行Job的时,内部又是怎么样一个流程呢? 1. Inputformat会从job的INPUT_DIR目录下读入待处理的文件,检查输入的有效性并将文件切分成InputSplit列...
  • scut1135
  • scut1135
  • 2013-09-08 23:19
  • 1053

hadoop大致的工作流程

hadoop过程中最重要的是MapReduce框架,可是处于集群的考虑,网络带宽的限制,其中还有很多优化。                 ...
  • zhx6044
  • zhx6044
  • 2012-10-21 19:19
  • 1842

spark原理及工作流程

1.1spark简介 1、Spark 是什么 Spark 是基于内存计算的大数据并行计算框架。Spark基于内存计算,提高了在大数据环境下数据处理的实时性,同时保证了高容错性和高可伸缩性,允许用户将Spark部署在大量廉价硬件之上,形成集群。 AMPLab 开发以Spark 为核心的BDAS ...
  • qq_16365849
  • qq_16365849
  • 2016-02-07 11:09
  • 4023

μC/OS-II实验:实验一 任务的基本管理

实验描述: 涉及的μC/OS-II系统函数: 实验代码:  app.c 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 void Task0(v...
  • fovwin
  • fovwin
  • 2013-08-18 20:48
  • 2258

[Servlet]Servlet的工作流程及注意事项

Servlet工作流程及注意事项
  • u013575441
  • u013575441
  • 2015-06-03 22:46
  • 1736

caffe工作流程

转自点击打开链接
  • Dachao_Xu
  • Dachao_Xu
  • 2016-03-15 19:19
  • 847

redmine使用总结redmine中的软件项目流程

1、新建问题时必须填写项目:跟踪、主题、描述、状态、优先级、指派给、父任务(如果没有可以不填,如果有一定要填)、开始日期、预期时间、跟踪者,注意这个时候一定不要填完成时间 2、每天每人解决某个问题时要实时登记工时、百分比、注释 3、问题被解决后要填写:状态、完成日期、完成百分比、耗时、活动、注释、说...
  • danny35
  • danny35
  • 2014-11-11 10:20
  • 2454

android 缓存管理与常用算法

缓存是存取数据的临时地,因为取原始数据代价太大了,加了缓存,可以取得快些。缓存可以认为是原始数据的子集,它是从原始数据里复制出来的,并且为了能被取回,被加上了标志。
  • qq2603825424
  • qq2603825424
  • 2014-07-18 22:47
  • 4851

软件测试工作流程

一、测试各个阶段 测试计划阶段:产品立项之后,确定测试负责人,开始制定测试计划; 测试准备阶段:测试用例,测试样机和配件,测试工具,测试人员全部到位。 测试执行阶段:负责人对测试任务分工,按计划执行测试过程,提交并跟踪缺陷。 测试总结阶段:项目测试结束,负责人输出测试报告。 二.测试对产品质量的控制...
  • wei_zhi
  • wei_zhi
  • 2016-02-29 16:20
  • 1474

OpenGL的基本工作流程

几何顶点数据包括模型的顶点集、线集、多边形集,这些数据经过流程图的上部,包括运算器、逐个顶点操作等;图像数据包括象素集、影像集、位图集等,图像象素数据的处理方式与几何顶点数据的处理方式是不同的,但它们都经过光栅化、逐个片元(Fragment)处理直至把最后的光栅数据写入帧缓冲器。在OpenGL中的所...
  • sharpsleepy
  • sharpsleepy
  • 2007-11-11 16:55
  • 567
    个人资料
    • 访问:30874次
    • 积分:1083
    • 等级:
    • 排名:千里之外
    • 原创:61篇
    • 转载:10篇
    • 译文:11篇
    • 评论:27条
    最新评论