OpenHarmony开发者论坛

标题: 代码分支的创建和拉取 [打印本页]

作者: wenfei6316    时间: 2024-5-8 22:29
标题: 代码分支的创建和拉取
[md]## 一、manifest介绍

**OpenHarmony全套代码是由每一个仓组成,每一个仓可以创建多个分支,通过将仓和分支组成起来就是全套的代码**

## 二、编写一个自己的xml文件

### 2.1 创建一个组织

**登录gitee点击左边的+就可以创建一个组织**

**当前使用HoperunHarmony或者arch\_adaptation组织**

[HoperunHarmony](https://gitee.com/halley5)是项目内部创建的组织,可以自行上传代码,主要是熟悉代码提交的熟悉

[arch\_adaptation](https://gitee.com/arch_adaptation)组织是用于正式联调君正x2000,等调测成功后直接合入到Openharmony上的,大家提交的时候最好都check一下

**Note:我们的组织为非付费组织不能上传大的二进制文件**

### 2.2 创建xml文件

#### 2.2.1 manifest仓创建

**从OpenHarmony开源组织中将manifest仓fork到自己创建的组织中**

![image.png](https://forums-obs.openharmony.c ... 77xx9hzz1jfpz38.png "image.png")

![image.png](https://forums-obs.openharmony.c ... 2ucy224xrzxrx7j.png "image.png")

![](file:///Z:/home/wen_fei/Document/document/img/basic_skills/env/repo_download_code/1.png?lastModify=1715178496)

![](file:///Z:/home/wen_fei/Document/document/img/basic_skills/env/repo_download_code/2.png?lastModify=1715178496)

![](file:///Z:/home/wen_fei/Document/document/img/basic_skills/env/repo_download_code/3.png?lastModify=1715178496)

#### 2.2.2 在master分支创建master\_demo.xml

**a> 将manifest仓下载到本地**

**git clone **[git@gitee.com](mailto:git@gitee.com):halley5/manifest.git

**b> 创建一个master\_demo.xml**

```
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
   <remote fetch="https://gitee.com/openharmony-sig/" name="sig" review="https://gitee.com/openharmony-sig/"/>
   <include name="default.xml" />
</manifest>
```

**c> 代码上库**

```
git add .
git commit . -m"add master_demo.xml"
git push -u origin master
```

**d> 代码拉取**

```
repo init -u https://gitee.com/halley5/manifest.git -b master -m master_demo.xml --no-repo-verify
repo sync -c -j16
repo forall -c 'git lfs pull'
repo start master --all
```

#### 2.2.3 在OpenHarmony-3.0-LTS分支上创建创建v3lts\_demo.xml

**a> 创建一个跟踪远程origin/OpenHarmony-3.0-LTS分支的本地分支OpenHarmony-3.0-LTS并切换到该分支**

```
git checkout -b OpenHarmony-3.0-LTS origin/OpenHarmony-3.0-LTS
```

**b> 创建一个v3lts\_demo.xml**

```
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
   <remote fetch="https://gitee.com/openharmony-sig/" name="sig" review="https://gitee.com/openharmony-sig/"/>
   <include name="default.xml" />
</manifest>
```

**c> 代码上库**

```
git add .
git commit . -m"add v3lts_demo.xml"
git push -u origin OpenHarmony-3.0-LTS
```

**d> 代码拉取**

```
repo init -u https://gitee.com/halley5/manifest.git -b OpenHarmony-3.0-LTS -m v3lts_demo.xml --no-repo-verify
repo sync -c -j16
repo forall -c 'git lfs pull'
repo start master --all
```

## 三、xml语法规则介绍

### 3.1 remote 作用

**创建远程拉取路径**

```
<remote fetch="../openharmony" name="origin" review="https://openharmony.gitee.com/openharmony/"/>
<remote fetch="https://gitee.com/halley5/" name="halley5" review="https://gitee.com/halley5"/>
```

#### 3.1.1 fetch

**定义一个远程拉取的路径,该路径可以是网络路径,也可以是当前仓的相对路径,最好定义成网络路径**

#### 3.1.2 name

**给该远程路径定义一个别名,为了后面project使用**

#### 3.1.3 review

**推测表示的是代码review的地址**

### 3.2 default 作用

```
<default remote="origin" revision="OpenHarmony-3.0-LTS" sync-j="4" />
```

**表示后面project中如果有相关属性省略则直接使用default中的属性**

### 3.3 include 作用

**表示将另一个xml文件包含进来,不解释**

```
<include name="default.xml" />
```

### 3.4 project 作用

**表示添加一个project仓,下载代码时由name、revision、remote三个属性决定,remote/name是该仓的代码路径,revision是下载该路径下的哪个分支代码,path表示下载后的仓代码放在本地哪个目录下**

```
<project name="vendor_halley5" path="vendor/ingenic" revision="master" remote="halley5"/>
```

#### 3.4.1 name

**表示仓名**

#### 3.4.2 path

**代码下载后放在什么位置**

#### 3.4.3 revision

**下载gitee仓下的哪个分支代码或者某个commit的代码**

#### 3.4.4 remote

**远程拉取的路径**

### 3.5 remove-project 作用

**删除一个仓,一般和project配合使用表示替换掉前面定义该仓的下载路径和分支**

```
<project name="kernel_liteos_a" path="kernel/liteos_a"  />
<remove-project name="kernel_liteos_a"/>
<project name="kernel_liteos_a" path="kernel/liteos_a" revision="halley5" remote="halley5"/>
```

### 3.6 linkfile 作用

**作用不知道**

```
<linkfile dest="build.py" src="build.py"/>
```

### 3.6 注释

**包含在该符号内**<!-- -->**的内容都是注释内容,可跨行注释**

```
<!-- <project name="drivers_adapter_khdf_linux" path="drivers/adapter/khdf/linux"/> -->
```

### 3.7 repo命令介绍

#### 3.7.1 repo init

**初始化下载的工程**

**-u表示我们下载的xml所在仓的地址url**

**-b表示要下载的xml在哪个分支branch下面,不加默认使用的是master**

**-m表示使用该仓下哪一个xml文件**

```
repo init -u https://gitee.com/halley5/manifest.git -b OpenHarmony-3.0-LTS -m v3lts_demo.xml --no-repo-verify
```

#### 3.7.2 repo sync

**下载代码**

**全量代码下载方法:**

```
repo sync -c -j16
```

**使单独仓代码下载方法,后面加仓的路径或者仓名都行**

```
repo sync -c kernel/liteos_a
repo sync -c kernel_liteos_a
```

#### 3.7.3 repo forall

**下载二进制库代码没注意我们的组织为非付费组织只能下载二进制大文件,不能上传**

```
repo forall -c 'git lfs pull'
```

#### 3.7.4 repo start

**初始化全部仓的本地分支**

```
repo start master --all
```
[/md]
作者: 润开鸿_梁开祝    时间: 2024-5-9 16:19
3.6 linkfile 作用
仓库的代码(分支)checkout 到本地时,会根据 linkfile 的描述创建软链接,以如下描述为例:
  1. <linkfile dest="build.sh" src="build_scripts/build.sh"/>
复制代码

checkout build 仓库的代码后,会在代码根目录创建一个名为“build.sh”的软链接文件,链接到对应仓库(build仓库)的 "build_scripts/build.sh" 文件上。
作者: 润开鸿_闻飞    时间: 2024-5-9 17:12
回复 润开鸿_梁开祝: 文章写的比较早了,那时候刚了解xml语法




欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/) Powered by Discuz! X3.5