> 技术文档 > 如何移植一个OpenHarmony基线_openharmony 代码 同步到 gitlab

如何移植一个OpenHarmony基线_openharmony 代码 同步到 gitlab

写在前边:分享这篇总结是希望有小伙伴在进行代码移植时,少走一点弯路,有个参考,可以更快的移植代码。

一、创建远程代码仓

此步骤各项目会有专门的人来处理,不做详细介绍

这里我们假设创建的远程仓名为:RK3568_OpenHarmony5.1.0_Backup

二、开源仓代码获取

以5.1.0-Release为例

开源基线:OpenHarmony-v5.1.0-Release:  

zh-cn/release-notes/OpenHarmony-v5.1.0-release.md · OpenHarmony/docs - Gitee.com

以我的目录为例,源码下载目录:~/work / Release _5.1.0/code

在此目录下进行以下操作:

repo init -u https://gitee.com/openharmony/manifest -b refs/tags/OpenHarmony-v5.1.0-Release --no-repo-verify  //初始化环境并切到对应分支(注意:这里推荐使用https方式的带v版本)
repo sync -c    //同步远程仓
repo forall -c \'git lfs pull\'    //下载lfs管理的大文件
./build/prebuilts_download.sh --skip-ssl    //预编译

三、移植

1.创建一个目录用来下载新基线代码(RK3568_OpenHarmony5.1.0_Backup)

2.以我的目录为例,我的新基线代码存储路径:~work /OpenHarmony/new

3.在此目录clone新基线仓(RK3568_OpenHarmony5.1.0_Backup),这一步操作在我们的4.远程仓下去复制clone指令clone之后进入新代码仓

work /OpenHarmony/new / RK3568_OpenHarmony5.1.0_Backup

5.ls -al查看当前仓根目录下只有一个.git,对.git进行备份或者重命名(重命名时不要以.git开头,因为后续操作会递归查找删除.git开头的文件和目录,这里我们重命名成.agit)

6.拷贝下载的OpenHarmony-v5.1.0-Release代码到新基线仓

cp -ar ~/ work / Release _5.1.0/code /* ~/ work /OpenHarmony/new / RK3568_OpenHarmony5.1.0_Backup/

7.拷贝完成后/ work /OpenHarmony/new /仓下的.gn文件需要手动拷贝到当前新代码仓RK3568_OpenHarmony5.1.0_Backup下,隐藏文件指令拷贝时会漏掉,这里需要我们手动复制粘贴一下

8.修改third_party/typescript/lib/.gitattributes名称(添加前缀,不要以.git开头)

之后

find -name \".gitignore*\" && find -name \".git*\" && find -name \".repo\" && find -name \".gitattributes\"    //检查.git

find ./ -name .git* | xargs rm -rf    //删除git文件
find ./ -name .repo | xargs rm -rf   //删除repo文件

.agit改回原来的名字.git  third_party/typescript/lib/.gitattributes已改回原本的名称

到这一步之后,在根目录git status查看变动之后执行git add .

之后再进行编译烧录验证,验证ok之后代码上库

编译指令:./build.sh --product-name rk3568

产物路径:\\out\\rk3568\\packages\\phone\\images\\

四、代码提交

git add .

git commit

commit信息里添加原始基线详细信息

git push origin HEAD:refs/for/master    //master是远程仓分支

注:这里对上述删除.git .repo相关操作简单说明下

.git和 .repo中绑定和保留了备份仓库信息,以及一些配置和链接,但是这些在我们提交代码是不需要的,不删除在代码提交和后续下载时会出现问题,比如lfs管理的一些大文件下载失败。而我们当前提交仓根目录下的.git为什么不删除,因为这里包含了远程仓信息,删除后提交代码时会找不到远程仓,这里只做简单说明,详细原因可自己查阅资料

五、精简流程

上述流程相对比较耗时,下面总结一下精简流程

OpenHarmony-v5.1.0-Release开源代码下载在这个目录:~/work / Release _5.1.0/code(repo sync -c 和repo forall -c \'git lfs pull\'都要执行)

clone新基线在这个目录:~work /OpenHarmony/new

在~/work / Release _5.1.0/code目录下进行以下操作:

1.预编译:./build/prebuilts_download.sh --skip-ssl

2. ~/work / Release _5.1.0/code目录下third_party/typescript/lib/.gitattributes修改名称(添加前缀,不要以.git开头)

3. ~/work / Release _5.1.0/code目录下删除.git*和.repo:

find ./ -name .git* | xargs rm -rf    //删除git文件

find ./ -name .repo | xargs rm -rf   //删除repo文件

4.third_party/typescript/lib/.gitattributes改回原本名称

5.将~work /OpenHarmony/new / RK3568_OpenHarmony5.1.0_Backup目录下的.git拷贝到oh5.1.0/code目录

6.git status查看变动之后执行git add .

7.编译烧录验证ok之后提交

注意:编译前尽量先git add,防止编译后格式属性相关变化

写在最后:以上均为个人理解,如有纰漏,请多多指教。OpenHarmony新人,欢迎各位大佬交流学习