• 使用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 (国内中科大源)

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

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

    1. step 1: 初始化 manifest git server端,用于规划整个项目的代码结构:
    2. pakydu@ubuntu18-fttr:~/works/3588/mygit$ mkdir -p rk3588/manifest
    3. pakydu@ubuntu18-fttr:~/works/3588/mygit$ cd rk3588/manifest/
    4. pakydu@ubuntu18-fttr:~/works/3588/mygit/rk3588/manifest$ ls -al
    5. pakydu@ubuntu18-fttr:~/works/3588/mygit/rk3588/manifest$ git init
    6. Initialized empty Git repository in /home/pakydu/works/3588/mygit/rk3588/manifest/
    7. pakydu@ubuntu18-fttr:~/works/3588/mygit/rk3588/manifest$
    8. #创建工程魔板:
    9. vi default.xml
    10. <?xml version="1.0" encoding="UTF-8"?>
    11. <manifest>
    12. <remote name="linux"
    13. fetch="http://git.inspur.com/rk3588" />
    14. <default revision="master"
    15. remote="linux"
    16. sync-j="1" />
    17. <project path="kernel" name="kernel" />
    18. <project path="buildroot" name="rootfs" />
    19. <project path="u-boot" name="u-boot" />
    20. <project path="external/rockit" name="external/rockit" />
    21. </manifest>
    22. #提交工程模版
    23. git add *
    24. git commit -m "add default.xml"
    25. git remote rm origin (删除旧的)
    26. git remote add origin http://git.inspur.com/rk3588/manifest.git
    27. git branch main
    28. git checkout main
    29. git push http://git.inspur.com/rk3588/manifest.git

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

    1. $ git init (已被git管控代码可省略)
    2. $ git add . (已被git管控代码可省略)
    3. $ git commit -m "Init Code" (已被git管控代码可省略)
    4. $ git push http://git.inspur.com/rk3588/kernel.git master (master or main)
    5. $git init (已被git管控代码可省略)
    6. $ git add . (已被git管控代码可省略)
    7. $ git commit -m "Init Code" (已被git管控代码可省略)
    8. $ git push http://git.inspur.com/rk3588/buildroot.git master
    9. ...

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

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

    Manifest示例

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

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <manifest>
    3. <default revision="refs/tags/android-13.0.0_r11"
    4. remote="aosp"
    5. sync-j="4" />
    6. <superproject name="platform/superproject" remote="aosp" revision="android-13.0.0_r11" />
    7. <contactinfo bugurl="go/repo-bug" />
    8. <project path="build/make" name="platform/build" groups="pdk" >
    9. <linkfile src="CleanSpec.mk" dest="build/CleanSpec.mk" />
    10. <linkfile src="buildspec.mk.default" dest="build/buildspec.mk.default" />
    11. <linkfile src="core" dest="build/core" />
    12. <linkfile src="envsetup.sh" dest="build/envsetup.sh" />
    13. <linkfile src="target" dest="build/target" />
    14. <linkfile src="tools" dest="build/tools" />
    15. </project>
    16. <project path="build/bazel" name="platform/build/bazel" groups="pdk" >
    17. <linkfile src="bazel.WORKSPACE" dest="WORKSPACE" />
    18. <linkfile src="bazel.sh" dest="tools/bazel" />
    19. <linkfile src="bazel.BUILD" dest="BUILD" />
    20. </project>
    21. <project path="build/bazel_common_rules" name="platform/build/bazel_common_rules" groups="pdk" />
    22. <project path="build/blueprint" name="platform/build/blueprint" groups="pdk,tradefed" />
    23. <project path="build/pesto" name="platform/build/pesto" groups="pdk" />
    24. <project path="build/soong" name="platform/build/soong" groups="pdk,tradefed" >
    25. <linkfile src="root.bp" dest="Android.bp" />
    26. <linkfile src="bootstrap.bash" dest="bootstrap.bash" />
    27. </project>
    28. <!-- END open-source projects -->
    29. </manifest>
    30. #示例
    31. pakydu@ubuntu18-fttr:~/works/3588/rk3588_org/.repo$ cat manifests/rk3588/rk3588_linux_bsp_release_20230114_v1.0.6c.xml
    32. <?xml version="1.0" encoding="UTF-8"?>
    33. <manifest>
    34. <include name="include/firefly_gitlab.xml" />
    35. <default remote="firefly-linux" sync-j="4" dest-branch="rk3588/firefly" revision="refs/tags/rk3588/linux_release_v1.0.6c"/>
    36. <project name="u-boot" />
    37. <project name="docs" >
    38. <linkfile dest="docs/.Socs/RK3588/Rockchip_Developer_Guide_Linux_Software_CN.pdf" src="Rockchip_Developer_Guide_Linux_Software_CN.pdf"/>
    39. </project>
    40. <project name="docs-soc_internal" path="docs/.Socs" >
    41. <linkfile dest="docs/RK3588" src="RK3588"/>
    42. </project>
    43. <project name="device/rockchip" dest-branch="firefly" >
    44. <linkfile dest="mkfirmware.sh" src="common/mkfirmware.sh"/>
    45. <linkfile dest="build.sh" src="common/build.sh"/>
    46. <linkfile dest="rkflash.sh" src="common/rkflash.sh"/>
    47. <linkfile dest="device/rockchip/.target_product" src="rk3588"/>
    48. <linkfile dest="firefly-update.sh" src="common/firefly-update.sh"/>
    49. </project>
    50. <project name="tools" >
    51. <linkfile dest="tools/windows/RKDevTool/RKDevTool_Release/config.cfg" src="windows/RKDevTool/RKDevTool_Release/rk3588-config.cfg"/>
    52. <linkfile dest="tools/windows/RKDevTool/rockdev/package-file" src="windows/RKDevTool/rockdev/rk3588-package-file"/>
    53. <linkfile dest="tools/windows/RKDevTool/rockdev/mkupdate.bat" src="windows/RKDevTool/rockdev/rk3588-mkupdate.bat"/>
    54. <linkfile dest="tools/linux/Linux_Pack_Firmware/rockdev/mkupdate.sh" src="linux/Linux_Pack_Firmware/rockdev/rk3588-mkupdate.sh"/>
    55. <linkfile dest="tools/linux/Linux_Pack_Firmware/rockdev/package-file" src="linux/Linux_Pack_Firmware/rockdev/rk3588-package-file"/>
    56. </project>
    57. <project name="kernel" />
    58. <project name="prebuilts/gcc/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu" />
    59. <project name="prebuilts/gcc/linux-x86/arm/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf" />
    60. <project name="rkbin" />
    61. </manifest>
    62. pakydu@ubuntu18-fttr:~/works/3588/rk3588_org/.repo$ cat manifest.xml
    63. <?xml version="1.0" encoding="UTF-8"?>
    64. <manifest>
    65. <include name="rk3588/rk3588_linux_bsp_release_20230114_v1.0.6c.xml" />
    66. <project name="external/security/rk_tee_user" />
    67. <project name="app/qfm" />
    68. <project name="app/QLauncher" />
    69. <project name="app/multivideoplayer" />
    70. <project name="app/qcamera" />
    71. <project name="app/qplayer" />
    72. <project name="app/qsetting" />
    73. <project name="buildroot" >
    74. <linkfile dest="Makefile" src="build/Makefile"/>
    75. <linkfile dest="envsetup.sh" src="build/envsetup.sh"/>
    76. </project>
    77. <project name="external/drm-cursor" />
    78. <project name="external/alsa-config" />
    79. <project name="external/camera_engine_rkaiq" />
    80. <project name="external/chromium" />
    81. <project name="external/rkwifibt-app" />
    82. <project name="external/rockchip-test" />
    83. <project name="uefi" />
    84. <project name="external/rk_pcba_test" />
    85. <project name="external/rkscript" dest-branch="firefly"/>
    86. <project name="external/rktoolkit" />
    87. <project name="external/rkupdate" />
    88. <project name="external/rkwifibt" />
    89. <project name="external/gstreamer-rockchip" />
    90. <project name="external/libmali" />
    91. <project name="external/linux-rga" />
    92. <project name="external/recovery" dest-branch="firefly"/>
    93. <project name="external/security/bin" />
    94. <project name="external/xserver" />
    95. <project name="external/mpp" />
    96. <project name="external/rknn-toolkit2" />
    97. <project name="external/rknpu2" />
    98. <project name="external/security/librkcrypto" />
    99. <project name="external/rockit" />
    100. </manifest>

    参考:

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

    总结常用repo命令 - 知乎

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

  • 相关阅读:
    Linux网络编程- IO多路复用
    java入门,记一次微服务间feigin请求的问题
    声纹技术(七):声纹技术的未来
    谷粒商城 高级篇 (三) --------- ElasticSearch 分词
    如何在 JavaScript 中使用媒体查询
    打印lua输出日志
    MATLAB环境下基于深层小波散射网络的纹理图像分类方法
    java计算机毕业设计疫情下发热门诊管理系统MyBatis+系统+LW文档+源码+调试部署
    战略合作 | 零数科技携手中智关爱通共建基于区块链的新人力服务网络
    Fragment的创建分析
  • 原文地址:https://blog.csdn.net/paky_du/article/details/132981825