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

这篇具有很好参考价值的文章主要介绍了使用git-repo管理多个git仓库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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博客文章来源地址https://www.toymoban.com/news/detail-767764.html

到了这里,关于使用git-repo管理多个git仓库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • BFG Repo-Cleaner 清理在Git历史记录中不需要的数据(git仓库臃肿、git仓库太大、清理git仓库大文件、清理.git\objects\pack中的.pack文件)

    在处理 Git 项目时,可能会遇到一些敏感信息或者大文件被误上传到了仓库,这样会导致仓库变得庞大并且难以管理。这种情况下,BFG Repo-Cleaner 就派上用场了。它是一个更简单、更快速的工具,可以帮助我们从 Git 历史记录中删除不需要的数据。 BFG Repo-Cleaner 是一个由 Scala

    2024年02月02日
    浏览(39)
  • Git本地仓库关联多个远程仓库的方法

    使用场景:本地仓库需要将代码提交到不同的远程仓库,如既想往gitLab上提交又想提交到gitee,就需要同时关联多个仓库 要将多个远程仓库添加到本地git仓库,可以使用以下命令: 其中, remote_name是你想要给远程仓库起的名字, remote_url是远程仓库的 URL。 例如,如果你想将

    2024年02月09日
    浏览(45)
  • git一套代码关联多个远程仓库(一行提交到两个仓库)

    因公司开发了自己的软件代码管理仓库项目,所以需要把之前在git上的项目代码同步到\\\"软件工厂\\\"的仓库中,但是也还没有完全弃用原来的git仓库,而且git 也用习惯了,所以我就考虑将代码提交的时候一次提交到两个远程仓库中。 通过该命令查看现有代码关联的仓库情况 通

    2024年02月05日
    浏览(55)
  • [教程]如何使用git管理版本库,推送项目到远程仓库

    1.确保已经下载git,如果未安装到C盘,先完成环境变量的配置 2.打开到项目根目录 3.在当前目录输入cmd打开命令行窗口    4.git全局设置 5.提交项目到本地仓库 6.二次提交项目 可以查看历史提交版本,并且随时同步历史版本到项目 7.提交本地仓库到远程仓库gitee 在gitee上新建

    2024年02月08日
    浏览(50)
  • Git仓库实现:一次性提交多个文件

    首先是建立服务器与仓库的连接,不会操作的小伙伴可以看这一篇文章,链接: Git仓库 保姆级教程 选择文件夹,使用git clone上传的仓库,点击进去 输入命令行: git commit -m \\\" \\\" ,双引号一般填入描述或者版本信息,但是若要提交多个文件,则写入 \\\"add more files\\\" 有问题欢迎随时

    2024年02月12日
    浏览(45)
  • DevOps系列文章 之 Java使用jgit管理git仓库

    最近设计基于gitops新的CICD方案,需要通过java读写git仓库,这里简单记录下。 在jgit中,存在最核心的三个组件:Git类,Repository类。Git类中包含了push commit之类的常见git操作,而Repository则实现了仓库的初始化和基本的管理功能。 Git类的实例都会持有一个Repository实例。 Repositor

    2024年02月12日
    浏览(28)
  • 一个 git 仓库下拥有多个项目的 git hooks 配置方案

    通常情况下,一个 git 仓库就是一个项目,只需要配置一套 git hooks 脚本就可以执行各种校验任务。对于 monorepo 项目也是如此,monorepo 项目下的多个 packages 之间,它们是有关联的,可以互相引用,所以当成一个项目也没问题。 但是也有一种情况,一个 git 仓库下的多个项目之

    2024年02月12日
    浏览(26)
  • idea如何为一个项目配置多个远程 Git 仓库

    有时候自己从开源项目中垃出来的项目需要同步推送到 github 和 gitlab 两个仓库地址,那么如何实现呢 添加多个远程仓库地址 然后在这里添加多个远程仓库地址 在提交代码的地方想提交哪个远程仓库自己去选择

    2024年02月12日
    浏览(38)
  • git在一台电脑上配置不同的仓库(多个gitee仓库、或者不同的github仓库)

    在开发过程中,我们工作的时候难免会使用到两个不同的仓库,但是正常来说一电脑默认一个参考,直接会用全局命令 但是这样只能配置一个仓库了,本文介绍在一台电脑上配置多个仓库,简单易用,请欣赏! 前提:您已经掌握了git仓库命令,不需要很会,有过配置用 CA证

    2024年02月13日
    浏览(44)
  • Git repo工具使用教程

    参考文档: git repo工具详细使用教程——彻底学会Android repo的使用git-repo大魔王爱学习的博客-CSDN博客 Manifest Format – git-repo: a git wrapper from Alibaba repo是Google开发的用于管理Android版本库的一个工具,repo是使用Python对git进行了一定的封装,并不是用于取代git,它简化了对多个G

    2024年02月06日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包