Repo代码仓库搭建

使用rockchip sdk二次开发,代码十几个G,都放在一个git仓库的话,每次git status要等好久,决定拆分一下,官方是用repo做代码管理的,我打算也搭建个类似开发环境。

1.首先在git服务器上创建一个manifest仓库,按照官方manifest规范配置自己用到的项目仓库。这里我创建了3个配置,一个是常用来编译发布镜像的;一个是编译调试内核和uboot的;还有一个是下载完整SDK的,这个基本上用不上,只是给SDK做了个备份。

2.把SDK每个子目录建成一个单独仓库上传到git服务器。有些仓库我做了分支,比如prebuilts里面的工具链我只用到了aarch64版本,没有必要全部同步到本地。有些仓库只是子目录的一部分,比如buildroot/support。我的项目用的是自己做好的ubuntu20,不需要buildroot全部代码,但是编译镜像的时候依赖他们。

3.使用repo命令同步自己仓库。编译的时候发现还是有问题,recovery.img、oem.img和userdat.img生成还是需要编译buildroot。自己动手改了一下device/rockchip/common/script目录下的编译脚本,删除这部分依赖。

4.repo命令每次init的时候总是去google下载最新版本,没有代理容易卡死报错,我自己封装了一层附上脚本代码:

#!/bin/bash

ROOT_DIR=`pwd`
MENIFEST_FILE="default.xml"
REPO_FILE=$HOME/.repo/repo

function usage()
{
    echo " "
    echo "usage: repo fpad [menifest.xml] [fpad_dir]"
    echo " "
    echo "******************* or *******************"
    echo " "
    which repo > /dev/null 2>&1
    if [ $? -eq 0 ]; then
        repo --help
    fi
}

function download_repo()
{
    
    if [ -e $REPO_FILE ]; then
        rm $REPO_FILE
    fi
    
    if [ ! -e $HOME/.repo ]; then
        mkdir $HOME/.repo
    fi

    curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o $REPO_FILE
    sed -i "s/\#\!\/usr\/bin\/env python$/\#\!\/usr\/bin\/env python3/g" $REPO_FILE
    chmod +x $REPO_FILE
}

function replace_repo()
{
    local NEW_REPO=$1
    
    if [ -e $REPO_FILE ]; then
        rm $REPO_FILE
    fi
    
    echo "release repo from $NEW_REPO"
    cp $NEW_REPO $REPO_FILE
    sed -i "s/\#\!\/usr\/bin\/env python$/\#\!\/usr\/bin\/env python3/g" $REPO_FILE
    chmod +x $REPO_FILE
}

function download_project()
{
    local DOWNLOAD_DIR=$1
    if [ -e $DOWNLOAD_DIR -a $ROOT_DIR != $DOWNLOAD_DIR ]; then
        echo "remove old project repo: $DOWNLOAD_DIR"
        rm -rf $DOWNLOAD_DIR
    fi
    
    if [ ! -e $DOWNLOAD_DIR ]; then
        mkdir -p $DOWNLOAD_DIR
        cd $DOWNLOAD_DIR
    fi
    
    echo "start to sync repo to $DOWNLOAD_DIR ... ..."
    repo init -u ssh://git@gitee.com/rk3588/manifest.git -m $MENIFEST_FILE
    replace_repo $DOWNLOAD_DIR/.repo/repo/repo
    repo sync -c
    repo start main --all 
}

if [ $# -lt 1 ]; then
    echo "too few args."
    usage
    exit 1;
fi

if [ ! -e $REPO_FILE ]; then
    echo "downlaod repo command file."
    download_repo
fi

export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'
export PATH=$HOME/.repo/:$PATH

if [ $1 == "project" ]; then
    case $# in
    1)
        download_project $ROOT_DIR
    ;;
    2)
        MENIFEST_FILE="$2.xml"
        echo "manifest file: $MENIFEST_FILE"
        download_project $ROOT_DIR
    ;;
    3)
        MENIFEST_FILE="$2.xml"
        download_project $3
    ;;
    *)
        echo "too many args."
        usage
        exit 1;
    ;;
    esac
else
    repo $@
    if [ $1 == "init" -a -e .repo/repo/repo ];then
        replace_repo .repo/repo/repo
    fi
fi

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/278248.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

架构设计系列之常见架构(二)

五、DDD(领域驱动设计) 领域驱动设计(Domain-Driven Design,DDD)是一种开发思想,强调将软件系统的注意力集中在业务领域上,将领域视为应用的核心。在架构设计中,DDD 提供了一种不同…

云端赋能大湾区:华为云照亮数字化转型之路

编辑:阿冒 设计:沐由 在中国的经济版图上,大湾区是极其重要的增长引擎。这块富有活力和创新力的经济区域里,荟聚了大量的高新技术企业,以及一批创新孵化器和科研机构,产业升级和技术创新的氛围格外浓烈。 1…

深眸科技聚焦AI+机器视觉产业化建设,加速智能制造国产替代升级

随着科技的不断发展,传统的制造生产已经无法满足现代制造业的需求,智能制造应运而生,以智能化、柔性化等生产优势,大幅提升制造效率和生产质量。智能制造是指具有信息自感知、自决策、自执行等功能的先进制造过程、系统与模式的总…

Django 表单处理:从前端到后台的全流程指南

概要 Django作为一个高级Python Web框架,它的表单处理能力强大,可以有效地处理用户输入,进行数据验证以及错误处理。本文将详细介绍如何在Django中创建、处理和使用表单。 1. Django表单系统的核心 Django的表单系统处理表单的生命周期&…

Unity | Shader基础知识(第六集:语法<如何加入外部颜色资源>)

目录 一、本节介绍 1 上集回顾 2 本节介绍 二、语法结构 1 复习 2 理论知识 3 Shader里声明的写法 4 Properties和SubShader毕竟不是一家人 三、 片元着色器中使用资源 四、代码实现 五、全部代码 六、下集介绍 相关阅读 Unity - Manual: Writing Surface Shaders…

多条件三元表达式如何写?

在某些业务需求情况下,如何书写多条件三元表达式?(例如,父组件传值给子组件,子组件根据不同的值去响应不同的颜色变化该如何实现?) 父组件: 父组件传testData的值给子组件&#xff…

一个适用于搭建企业内部培训平台的开源系统

大家好,我是 Java陈序员。 问君能有几多愁,唯有开源项目解千愁! 最近领导给了个任务,搭建一个企业内部培训平台!好不容易刚完成上个任务,又来一个活,这不又得加班了! 还好&#x…

解决Chrome同一账号在不同设备无法自动同步书签的问题

文章目录 一、问题与原因?2. 解决办法 一、问题与原因? 1.问题 使用谷歌Chrome浏览器比较头疼的问题就是:使用同一个Google账号,办公电脑与家用电脑的数据无法同步。比如:办公电脑中的书签、浏览记录等数据&#xff0…

Python计算圆的面积,几何学技法大解析!

更多Python学习内容:ipengtao.com 大家好,我是彭涛,今天为大家分享 Python计算圆的面积,几何学技法大解析,全文3800字,阅读大约15分钟。 在本文中,将深入探讨如何使用 Python 计算圆的面积&…

LVS负载均衡器(nat模式)+nginx(七层反向代理)+tomcat(多实例),实现负载均衡和动静分离

目录 前言 一、配置nfs共享存储 二、配置2个nginx节点服务的网页页面 节点1:192.168.20.10 步骤一:修改网关指向调度器的内网ip地址 步骤二:将nfs共享的目录进行挂载,并修改nginx的配置文件中location的root指向挂载点 步骤三&#xff…

【ArcGIS Pro二次开发】:CC工具箱1.1.5更新_免费_50+工具

CC工具箱1.1.5更新【2023.12.15】 使用环境要求:ArcGIS Pro 3.0 一、下载链接 工具安装文件及使用文档: https://pan.baidu.com/s/1OJmO6IPtMfX_vob3bMtvEg?pwduh5rhttps://pan.baidu.com/s/1OJmO6IPtMfX_vob3bMtvEg?pwduh5r 二、使用方法 1、在下…

Java系列-HashMap构造方法

1.无参 只初始化了loadFactor public class HashMap<K,V> extends AbstractMap<K,V>implements Map<K,V>, Cloneable, Serializable {final float loadFactor;public HashMap() {this.loadFactor DEFAULT_LOAD_FACTOR; // all other fields defaulted} }2…