使用git-repo管理多个git仓库

2023-09-18 15:43:37

step 1: 下载repo

git-repo下载可在服务器端通过以下任一方式下载。

git clone https://gerrit.googlesource.com/git-repo (谷歌官方源)

git clone https://mirrors.tuna.tsinghua.edu.cn/git/git-repo (国内清华源)

git clone git-repo - Git at Google (国内中科大源)

step 0:建立私人的git-repo工具工程:
方法一,在git server上直接操作
git clone https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -b main
方法二,在本地操作,然后上传到git server:
# git clone --mirror  https://mirrors.tuna.tsinghua.edu.cn/git/git-repo  
git remote add gitrepo.git http://git.inspur.com/rk3588/gitrepo.git
git push -u gitrepo.git --all
git push -u gitrepo.git --tags   (可选)
#git config --global http.postBuffer 1048576000   //设置缓存为1G
# git config http.postBuffer 524288000  //查看 http.postBuffer数值是否设置成功

step 2 初始化工程和mainifest git仓库

step 1: 初始化 manifest git server端,用于规划整个项目的代码结构:
pakydu@ubuntu18-fttr:~/works/3588/mygit$ mkdir -p rk3588/manifest
pakydu@ubuntu18-fttr:~/works/3588/mygit$ cd rk3588/manifest/
pakydu@ubuntu18-fttr:~/works/3588/mygit/rk3588/manifest$ ls -al
pakydu@ubuntu18-fttr:~/works/3588/mygit/rk3588/manifest$ git init
Initialized empty Git repository in /home/pakydu/works/3588/mygit/rk3588/manifest/
pakydu@ubuntu18-fttr:~/works/3588/mygit/rk3588/manifest$

#创建工程魔板:
vi default.xml
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
  <remote  name="linux"
           fetch="http://git.inspur.com/rk3588" />
  <default revision="master"
           remote="linux"
           sync-j="1" />

  <project path="kernel" name="kernel" />
  <project path="buildroot" name="rootfs" />
  <project path="u-boot" name="u-boot" />
  <project path="external/rockit" name="external/rockit" />

</manifest>

#提交工程模版
    git add *
    git commit  -m "add default.xml"
     git remote rm origin  (删除旧的)
    git remote add origin http://git.inspur.com/rk3588/manifest.git
    git branch main
    git checkout main
    git push http://git.inspur.com/rk3588/manifest.git

step 3: 上传每个git的代码:

$ git init (已被git管控代码可省略)
$ git add . (已被git管控代码可省略)
$ git commit -m "Init Code" (已被git管控代码可省略)
$ git push http://git.inspur.com/rk3588/kernel.git master  (master or main)

$git init (已被git管控代码可省略)
$ git add . (已被git管控代码可省略)
$ git commit -m "Init Code" (已被git管控代码可省略)
$ git push http://git.inspur.com/rk3588/buildroot.git master
...

step 4: 在客户端上repo拉取服务器端代码

将REPO_URL = ‘https://gerrit.googlesource.com/git-repo’ 
修改为 REPO_URL = ‘http://git.inspur.com/rk3588/git-repo.git’
#git push http://git.inspur.com/rk3588/git-repo.git
#export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'
#export REPO_URL='http://git.inspur.com/rk3588/git-repo.git'
repo init -u http://git.inspur.com/rk3588/manifest.git

Manifest示例

每个采用 repo 管理的复杂多仓库项目都需要一个对应的 manifest 仓库,如 AOSP 的 manifest ,此仓库用来存储所有子仓库的配置信息,repo 也是读取此仓库的配置文件来进行管理操作。里面的配置就是 xml 定义的结构,例如aosp default repository一般是default.xml。

<?xml version="1.0" encoding="UTF-8"?>
<manifest>
  <default revision="refs/tags/android-13.0.0_r11"
           remote="aosp"
           sync-j="4" />

  <superproject name="platform/superproject" remote="aosp" revision="android-13.0.0_r11" />
  <contactinfo bugurl="go/repo-bug" />

  <project path="build/make" name="platform/build" groups="pdk" >
    <linkfile src="CleanSpec.mk" dest="build/CleanSpec.mk" />
    <linkfile src="buildspec.mk.default" dest="build/buildspec.mk.default" />
    <linkfile src="core" dest="build/core" />
    <linkfile src="envsetup.sh" dest="build/envsetup.sh" />
    <linkfile src="target" dest="build/target" />
    <linkfile src="tools" dest="build/tools" />
  </project>
  <project path="build/bazel" name="platform/build/bazel" groups="pdk" >
    <linkfile src="bazel.WORKSPACE" dest="WORKSPACE" />
    <linkfile src="bazel.sh" dest="tools/bazel" />
    <linkfile src="bazel.BUILD" dest="BUILD" />
  </project>
  <project path="build/bazel_common_rules" name="platform/build/bazel_common_rules" groups="pdk" />
  <project path="build/blueprint" name="platform/build/blueprint" groups="pdk,tradefed" />
  <project path="build/pesto" name="platform/build/pesto" groups="pdk" />
  <project path="build/soong" name="platform/build/soong" groups="pdk,tradefed" >
    <linkfile src="root.bp" dest="Android.bp" />
    <linkfile src="bootstrap.bash" dest="bootstrap.bash" />
  </project>

  <!-- END open-source projects -->
</manifest>

#示例
pakydu@ubuntu18-fttr:~/works/3588/rk3588_org/.repo$ cat manifests/rk3588/rk3588_linux_bsp_release_20230114_v1.0.6c.xml
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
  <include name="include/firefly_gitlab.xml" />
  <default remote="firefly-linux" sync-j="4" dest-branch="rk3588/firefly" revision="refs/tags/rk3588/linux_release_v1.0.6c"/>
  <project name="u-boot" />
  <project name="docs" >
    <linkfile dest="docs/.Socs/RK3588/Rockchip_Developer_Guide_Linux_Software_CN.pdf" src="Rockchip_Developer_Guide_Linux_Software_CN.pdf"/>
  </project>
  <project name="docs-soc_internal" path="docs/.Socs" >
    <linkfile dest="docs/RK3588" src="RK3588"/>
  </project>
  <project name="device/rockchip" dest-branch="firefly" >
    <linkfile dest="mkfirmware.sh" src="common/mkfirmware.sh"/>
    <linkfile dest="build.sh" src="common/build.sh"/>
    <linkfile dest="rkflash.sh" src="common/rkflash.sh"/>
    <linkfile dest="device/rockchip/.target_product" src="rk3588"/>
    <linkfile dest="firefly-update.sh" src="common/firefly-update.sh"/>
  </project>
  <project name="tools" >
    <linkfile dest="tools/windows/RKDevTool/RKDevTool_Release/config.cfg" src="windows/RKDevTool/RKDevTool_Release/rk3588-config.cfg"/>
    <linkfile dest="tools/windows/RKDevTool/rockdev/package-file" src="windows/RKDevTool/rockdev/rk3588-package-file"/>
    <linkfile dest="tools/windows/RKDevTool/rockdev/mkupdate.bat" src="windows/RKDevTool/rockdev/rk3588-mkupdate.bat"/>
    <linkfile dest="tools/linux/Linux_Pack_Firmware/rockdev/mkupdate.sh" src="linux/Linux_Pack_Firmware/rockdev/rk3588-mkupdate.sh"/>
    <linkfile dest="tools/linux/Linux_Pack_Firmware/rockdev/package-file" src="linux/Linux_Pack_Firmware/rockdev/rk3588-package-file"/>
  </project>
  <project name="kernel" />
  <project name="prebuilts/gcc/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu" />
  <project name="prebuilts/gcc/linux-x86/arm/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf" />
  <project name="rkbin" />
</manifest>
pakydu@ubuntu18-fttr:~/works/3588/rk3588_org/.repo$ cat manifest.xml
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
  <include name="rk3588/rk3588_linux_bsp_release_20230114_v1.0.6c.xml" />
  <project name="external/security/rk_tee_user" />
  <project name="app/qfm" />
  <project name="app/QLauncher" />
  <project name="app/multivideoplayer" />
  <project name="app/qcamera" />
  <project name="app/qplayer" />
  <project name="app/qsetting" />
  <project name="buildroot" >
    <linkfile dest="Makefile" src="build/Makefile"/>
    <linkfile dest="envsetup.sh" src="build/envsetup.sh"/>
  </project>
  <project name="external/drm-cursor" />
  <project name="external/alsa-config" />
  <project name="external/camera_engine_rkaiq" />
  <project name="external/chromium" />
  <project name="external/rkwifibt-app" />
  <project name="external/rockchip-test" />
  <project name="uefi" />
  <project name="external/rk_pcba_test" />
  <project name="external/rkscript" dest-branch="firefly"/>
  <project name="external/rktoolkit" />
  <project name="external/rkupdate" />
  <project name="external/rkwifibt" />
  <project name="external/gstreamer-rockchip" />
  <project name="external/libmali" />
  <project name="external/linux-rga" />
  <project name="external/recovery" dest-branch="firefly"/>
  <project name="external/security/bin" />
  <project name="external/xserver" />
  <project name="external/mpp" />
  <project name="external/rknn-toolkit2" />
  <project name="external/rknpu2" />
  <project name="external/security/librkcrypto" />
  <project name="external/rockit" />
</manifest>

参考:

https://www.exyb.cn/news/show-159545.html?action=onClick

总结常用repo命令 - 知乎

搭建repo服务器管理多个git工程_repo管理多个git_songze_lee的博客-CSDN博客

更多推荐

拓世AIGC | 大语言模型螺旋上升式进化,人文、技术与未来

本月初,上海世博园举办外滩大会见解论坛中,众多学者和企业家共同探讨了大语言模型时代的人机关系、硅基生命和碳基生命未来之争等议题。面对全新的局面,论坛释放出积极信号和值得持续关注的论点。从黄浦江的波涛翻涌,我们捕捉到了人工智能未来科技的波澜壮阔。(汇集近20位两院院士、诺贝尔奖和图灵奖得主,超500位科技企业家和专家学者

Websocket集群解决方案以及实战(附图文源码)

最近在项目中在做一个消息推送的功能,比如客户下单之后通知给给对应的客户发送系统通知,这种消息推送需要使用到全双工的websocket推送消息。所谓的全双工表示客户端和服务端都能向对方发送消息。不使用同样是全双工的http是因为http只能由客户端主动发起请求,服务接收后返回消息。websocket建立起连接之后,客户端

WebMvcConfigurerAdapter、WebMvcConfigurer、WebMvcConfigurationSupport

WebMvcConfigurerAdapter、WebMvcConfigurer、WebMvcConfigurationSupport的关系?WebMvcConfigurerAdapter、WebMvcConfigurer和WebMvcConfigurationSupport是SpringMVC框架中用于配置Web应用

android系统目录结构

文章目录android系统目录结构问答偏好设置保存在哪里在应用设置中点击清除数据,清除的是什么在应用设置中点击清除缓存,清除的是什么参考android系统目录结构/-system(一般只有root权限才能访问)-data-app(存放应用程序的APK文件)-data(内部存储)-<安装的应用包名>-app_textur

lock和synchronized的区别

lock和synchronized都是在多线程环境下用于保护共享资源的机制,但它们有一些重要的区别:实现方式:synchronized是Java语言内置的关键字,可以用于方法或代码块级别的同步。Lock是一个接口,位于java.util.concurrent.locks包下,提供了更灵活的锁定机制。灵活性:Lock提供

SQL-4大板块(存储过程、函数、视图、触发器)

一、存储过程(做复杂运算)1.做复杂运算,是对变量做运算;2.可以对多个表进行update、insert、delete、select、query;3.可以在最终结果返回多个表,但是对对接环境有苛刻要求,比如:VB不支持接收返回多个表4.当一个查询语句无法实现,或者语句查询速度很慢时,想提高效率就会用到存储过程。先把需要

MongoDB——将时间戳转换为日期

在MongoDB中将时间戳转换为日期从timestamp转换为日期取决于我们保存时间戳的类型。它是对象、数字还是字符串类型?我们可以在mongoshell上使用以下命令检查字段的类型。在本教程中,我们将学习如何将时间戳转换为数字、字符串或对象类型的日期。检查字段类型://MongoDB5.0.8>typeofdb.co

滑动时间窗口的思想和实现,环形数组,golang

固定时间窗口在开发限流组件的时候,我们需要统计一个时间区间内的请求数,比如以分钟为单位。所谓固定时间窗口,就是根据时间函数得到当前请求落在哪个分钟之内,我们在统计的时候只关注当前分钟之内的数量,即[0s,60s],因为流量并不是均匀的,所以就会出现,在两个分钟之间超过阈值,1分50秒时来了150个请求,在2分10秒时来

图像语义分割概述

图像语义分割概述一、图像语义分割概念图像语义分割(ImageSemanticSegmentation)是一项计算机视觉任务,其目标是将输入的图像分割成多个区域,并为每个像素分配一个语义类别标签,以表示该像素属于图像中的哪个物体或区域。与其他图像分割任务不同,图像语义分割不仅关注于分割图像,还要理解图像中不同部分的语义含

【C++】面向对象编程示例 ( 案例需求 | Visual Studio 创建类 | 类的声明 | 类的实现 | 类的调用 )

文章目录一、案例需求二、VisualStudio创建类三、类的声明四、类的实现五、类的调用一、案例需求使用C++面向对象,抽象出一个立方体类;立方体有长/宽/高/面积/体积私有成员变量,以及访问这些成员变量的公共成员方法;还提供立方体的对比函数,对比2个立方体对象是否相等;二、VisualStudio创建类在Visua

【C++】类的声明 与 类的实现 分开 ① ( 类的声明 与 类的实现 常用用法 | Visual Studio 2019 中创建类的头文件和源文件 | 确保头文件包含一次 )

文章目录一、类的声明与类的实现分开1、类的声明与类的实现常用用法2、VisualStudio2019中创建类的头文件和源文件3、Student.h类头文件解析4、确保头文件包含一次一、类的声明与类的实现分开1、类的声明与类的实现常用用法在之前的博客中,定义的class类,定义类时同时也完成了实现;但是在C++语言实际开

热文推荐