3 Star 13 Fork 5

金永生 / team_x

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
readme.md 4.87 KB
一键复制 编辑 原始数据 按行查看 历史

裁剪OpenHarmony的仓库代码

​ OpenHarmony是基于多仓库的,所有的仓库代码使用repo进行管理组织。看了候老师的直播课,有感。

​ 本文着重讲述两点:

  • 如何讲自己的仓库代码放到OpenHarmony中的合适位置
  • 如何基于Repo来裁剪当前OpenHarmony的整体仓库(OpenHarmony代码仓库十分庞大,下载不易,存储不易,且行且珍惜)

将自己的代码加入到系统代码仓库中

目标:将team-x团队适配的开发板以及开发样例加入到OpenHarmony的仓库一起下载。

一般的做法就是先把版本代码拉下来,然后再拉我们的自己的代码即可:参考文档:基于OpenHarmony3.0 适配stm32f4

本节介绍的是如何使用repo将两者一块拉下来。

创建文件夹:ohos_test,使用repo初始化为OpenHarmony 3.0LTS。

repo_init

查看本目录,我们发现会多了.repo目录,并且.repo目录下面已经有了default.xml,该文件最终包含的就是.

repo_dir

接下来怎么做呢?就是将管理team_x的xml clone的repo目录,并且必须命名为local_manifests.

local_manifests

default_xml

然后执行repo sync -c,经过漫长的时间,不出意外的话我们的仓库会一起随着主干代码拉下来。

干掉不用的代码

​ 上面我们介绍了把自己的仓库代码加入到OHOS代码中,这份代码是一个全量代码,所以下载会等待很长很长的时间,也会占用很多很多的空间,那么怎么办呢?修改默认的manifest/default.xml是一个好主意,可以让我们少拉一些代码,但是侵入式的修改非我辈所希望的,因此还是采用local_manifests的方式,既然能加,自然也可以删除:关键字就是remove-project。

​ 类似这样:

<?xml version='1.0' encoding='utf-8'?>
<manifest>
     <remove-project name="miscservices_inputmethod" />
     <remove-project name="aafwk_aafwk_lite" />
</manifest>

​ 那么删除哪些呢?理论上删除所有我们不需要的。看过候老师直播课的同学都知道manifest下面有个matrix_product.csv,这个就是产品组件矩阵,我们依照这个裁剪即可,将哪些我们say N的全部干掉(这个不是太精准,部分可能遗漏,比方3861的开发板对cmsis说N,不能接受),理论上拿到hpm的表单最靠谱。

csv文件格式如下:

csv format

裁剪步骤:

  • 使用repo init -u xxxx -b xxxx 类似的命令获取主干你想要的版本全量集合
  • 在初始化的目录中会有一个.repo,里面的manifest文件夹就是我们从主干获取的manifest,其中的default.xml就是我们即将去拉取的代码仓库集合;matrix_product.csv文件表示当前主干的矩阵关系(CI门禁使用?)
  • 在.repo目录中,创建local_manifests目录,创建default.xml文件,按照project语法增加自己的需要添加的仓库;按照remove-project语法删除自己不太需要的仓库。(所谓的语法就是xml的,格式要遵守)

看起来很完美了,不是吗?但是那个CSV看起来都痛,还需要手动去改xml?好吧,直观感觉我们需要一个小工具,详情请继续。

Repo Cutting小工具

凭我的直觉看,我觉得应该有个小工具来完成这个工作,而不是手动的,否则太残忍了点。试着学习python搞定这个事情,还好找到了python中有两个工具xml/csv,就是专门干这两个事情的。下面介绍如何使用这个python脚本:首先确认你的python环境已经安装了xml/csv(自带的?如果没有请度娘安装。)

  • 首先获取这个repo_cutting.py的脚本, 放到指定目录。

  • 创建目录,并使用repo init进行初始化你要获取的代码版本

    ohos_dir

  • 将repo_cutting.py放到ohos_test/.repo(目录下)

    tool-mov

  • 切换到.repo目录下,执行python repo_cutting.py -l 即可看到当前支持的产品系列,选取一个来执行。默认我们使用润和的hispark_pegasus

    cutting_usage

  • 然后切回到ohos_test目录使用repo sync -c 同步代码即可。

    可以看到剩下的project非常少了,你可以尝试了。

    repo_sync

    如果你有自己的仓库需要增加,只需要在生成的local_manifests/default.xml增加自己的即可。

  • 最后一个问题:repo_cutting.py一定要放到.repo目录吗?

    事实是不必的,不过你需要使用-d 参数指定.repo所在的目录。

    specified_dirs

    写在最后:目前csv文件并不是太精确,有些仓库可能需要手动处理,anyway,毕竟我们已经搞定大部分了。windows? 一样可以用这个脚本!

1
https://gitee.com/Cruise2019/team_x.git
git@gitee.com:Cruise2019/team_x.git
Cruise2019
team_x
team_x
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891