常用repo命令

Repo简介:

repo 是用来管理N个git仓库的工具;

它需要一个manifest.xml脚本来记录都有哪些git仓库需要一起下载下来,组成一个完整的项目.

其中每一个project都是一个git仓库的组成单元

1.manifest.xml文件格式:

<?xml version="1.0" encoding="UTF-8"?>
<manifest>
  <remote fetch=".." name="smartisan" review="ssh://review.smartisan.cn/"/>
  <remote fetch="../.." name="smartisanos" review="ssh://review.smartisan.cn/"/>
  
  <default remote="smartisan" revision="cts/ocean-mol-6.2.0-20180702"/>
  ... ...
  <project name="packages/apps/KeyguardSmartisan" remote="smartisanos" />
  <project name="packages/apps/SystemUI" remote="smartisanos" />
  <project name="packages/apps/SystemUISmartisan" remote="smartisanos" />
  <project name="platform/packages/apps/Launcher2" path="packages/apps/Launcher2" />
  <project name="platform/packages/apps/Launcher3" path="packages/apps/Launcher3" />
  ... ...
</manifest>
  • 一个manifest.xml 文件中可以有多个“remote”,每个 remote 有各自的名字(name 属性),通过各自的 fetch 属性给出了相应的 project git remote URL 的计算方法。
  • 其中有一个 remote 和 revision 默认值设置 <default remote="XXX" revision="YYY"/>
  • 每个 project 都可以指定 remote(如果没有指定就采用前面的 default remote)和 revision(如果没有指定则采用 default revision)(revision 一般是一个分支的名字,但也可以是某个 git commit 的 hash,尤其是在 manifest 快照中)
  • 每个project指定了name属性或者patch属性,如果只指定了一个,则另一个取相同的值

       其中 path 属性决定代码同步下来之后,该 project 在文件系统中的路径

      name 属性与该 project 的 remote 属性(及 xml 中该 remote 的 fetch 属性)相结合,确定出该项目的远程服务器 URL

2. 常用命令:

1.在运行正确的repo init命令之后,如在相应工程名称的目录下执行如下命令:

repo init -u ssh://smartisan/qualcomm/platform/manifest.git -b sanfrancisco -m cts/ocean-mol-6.2.0-20180702.xml --repo-url ssh://smartisan/googlesource/git-repo --reference /home/ylxing/src/android-mirror/ --depth 1 -g all,-notdefault,sos

即可在当前目录下初始化一个.repo文件夹

然后可以一次性同步全仓代码:repo sync -j4 ;

也可以直拉一个单仓的代码:repo sync packages/apps/KeyguardSmartisan

2.在修改代码前需要确保你的代码是基于服务器上最新版本:

git fetch -v smartisanos cts/ocean-mol-6.2.0-20180702 # 或者用 repo sync -n -c .

git rebase smartisanos/cts/ocean-mol-6.2.0-20180702

如果 rebase 时有冲突的话,说明其他人已经进了新的代码,并且与你的改动冲突,你需要自己解冲突,有必要的话,需要与相关 patch 作者进行沟通

3.用 git diff smartisan/sfo-rom 先自己在本地做一下 review

4.push for review (注意此命令已经不能直接使用,必须先配置一下,请参考 为什么不能直接 git push review 了

git push smartisanos HEAD:refs/for/cts/ocean-mol-6.2.0-20180702

5.打开相应的 Gerrit Review 网页,添加你的 Team Leader 或相关工程师作为 Reviewers。

如果你的 Reviewers Review 通过,那么恭喜,流程到此结束,你的代码就进了服务器了,可以去开发下一个功能、解下一个 Bug 了。

如果你的 Reviewer 们提出问题,需要你进行修改的话,进入下一个步骤:

6.在原来的提交的基础上,进行相应的改正,然后用 git commit --amend 命令再次提交。因为 --amend 参数的关系,原来的 commit message 会显示出来,你可以编辑,但是!绝对不要改 Change-Id!因为在逻辑上,你还是在解决同一个问题。

回到上面的第 2 步,重新来一遍(所以提升自己的水平,争取一遍就把 Patch 通过,格外重要;使用 gerrit-push-review 命令, 简化以上步骤,格外重要;同时,一次 Review 不过,多次 Review,格外重要——不管不顾代码质量,提上来就保证通过 Review,是给大家挖坑作死的节奏)。

这时候在第 4 步时,因为你的 Change-Id 没变,Gerrit Review 的网址也不会变,只是会生成一个新的 Patch Set。

第 5 步添加 Reviewer 可以省略,Reviewer 们会自动收到邮件通知有新的 patch set 生成。

 

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值