Linux repo基本用法 搭建自己的repo仓库[服务端]

  • Git 是单个项目的版本控制系统。
  • Repo 是在 Git 之上构建的工具,用于大规模分布式开发环境中的多仓库协同管理。

使用 Repo 的好处在于能够方便地同时处理和同步多个相关联的 Git 仓库,简化复杂项目中跨仓库的日常版本控制任务。

使用REPO

国内的环境建议用mirrors.tuna.tsinghua.edu.cn 镜像

curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o ~/bin/repo
chmod +x repo

为了方便可以将其拷贝到你的PATH里。

更新

repo的运行过程中会尝试访问官方的git源更新自己,如果想使用tuna的镜像源进行更新,可以将如下内容复制到你的~/.bashrc

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

并重启终端模拟器。

  • 同步/更新
repo sync [project0 project1 ... projectn]
repo sync [/path/to/project0 ... /path/to/projectn]

  • 初始化/init
repo init -u url [options]

在当前目录中安装 Repo。此命令会创建一个 .repo/ 目录,其中包含存放 Repo 源代码和标准 Android 清单文件的 Git 代码库。

选项:

+ `u`:指定从中检索清单代码库的网址。常见清单位于 `https://android.googlesource.com/platform/manifest`。
+ `m`:选择代码库中的清单文件。如果未选择清单名称,则默认为 `default.xml`。
+ `b`:指定修订版本,即特定的 **manifest-branch**。**注意**对于所有剩余的 Repo 命令,当前的工作目录必须是 **`.repo/`** 的父目录或该父目录的子目录。

当输入空的URL初始化, 报错. python 改为 python3 即可


ubuntu@SERVER4:/disk4/repoTest$ repo init
Downloading Repo source from https://mirrors.tuna.tsinghua.edu.cn/git/git-repo
remote: Enumerating objects: 8731, done.
remote: Counting objects: 100% (4959/4959), done.
remote: Compressing objects: 100% (2487/2487), done.
remote: Total 8731 (delta 4744), reused 2472 (delta 2472), pack-reused 3772
Receiving objects: 100% (8731/8731), 3.01 MiB | 4.60 MiB/s, done.
Resolving deltas: 100% (6011/6011), done.
Traceback (most recent call last):
  File "/home/user/bin/repo", line 1490, in <module>
    main(sys.argv[1:])
  File "/home/user/bin/repo", line 1440, in main
    _Init(args, gitc\_init=(cmd == "gitc-init"))
  File "/home/user/bin/repo", line 691, in _Init
    os.rename(dst, dst_final)
OSError: [Errno 39] Directory not empty: '/disk4/repoTest/.repo/repo.tmp' -> '/disk4/repoTest/.repo/repo'

搭建Repo仓库(服务端)

  1. 搭建基于gitolite的GIT服务器 192.168.7.3

  2. 默认创建的几个git仓库

    • 2.1. gitolite-admin : 用于管理git仓库和用户秘钥 [自动创建]
    • 2.2. manifest: 特殊Git仓库, repo通过此项目来获取仓库, 它包含了项目的清单(manifest)文件。仓库任意名称[手动创建]

    default.xml 或者 manifest.xml 这是最重要的文件之一,定义了项目树状结构、各个子项目的URL、分支、标签以及其他同步策略等信息。每个项目对应一个 <project> 标签,并且包含项目路径、git仓库URL等属性

    groups.xml:可能存在的文件,用于定义不同的项目组,以便于根据开发团队的不同需求或者权限来下载不同的子项目集合。

    other-manifests/ 目录: 该目录下可能有多个针对不同构建目标或版本的manifest文件,如 android-9.0.0.xml 等。

    • 2.3. test: 测试项目 [自动创建]
  3. 配置repo的manifest: 只需要一个文件- default.xml

    • default.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <manifest>
      <remote name="codes" fetch="."/>
      
      <default remote="codes" sync-j="4"/>
      
      <project name="project\_1" revision="master"/>
      <project name="project\_2" revision="master"/>
    </manifest>
    
    

manifest文件定义了这些仓库的基本布局和同步规则。配置含义如下:

  • <remote name="codes" fetch="."/>:定义了一个远程仓库,名字叫做codes,其fetch地址为.。这里的.代表当前目录,意味着所有的项目都位于本地同一个父目录下,不需要从远程服务器拉取代码。
  • <default remote="codes" sync-j="4"/>:设置默认的远程仓库为刚刚定义的codes,并且设置了sync-j属性为4,这意味着在执行repo sync命令时,将会并发运行4个jobs(任务)来并行拉取和更新各个项目。
  • <project name="project_1" revision="master"/>:定义了一个名为project_1的项目,其对应的Git仓库的分支或者提交哈希为master,repo会在同步时检查并确保该项目处于master分支的最新状态。
  • <project name="project_2" revision="master"/>:类似地,定义了另一个名为project_2的项目,同样指向master分支。

文件描述了一个由两个Git项目(project_1project_2)组成的代码仓库集合,它们都将从本地的codes远程仓库同步,并且在同步时默认使用master分支,并且同步过程可以并发执行四个任务以提高效率。

  1. 客户端下载同步
    刚开始使用的文件名称: manifest, 导致报错: 'default.xml’ not available
        Downloading Repo source from https://mirrors.tuna.tsinghua.edu.cn/git/git-repo
        remote: Enumerating objects: 8731, done.
        remote: Counting objects: 100% (4959/4959), done.
        remote: Compressing objects: 100% (2487/2487), done.
        remote: Total 8731 (delta 4745), reused 2472 (delta 2472), pack-reused 3772
        Receiving objects: 100% (8731/8731), 3.01 MiB | 10.66 MiB/s, done.
        Resolving deltas: 100% (6012/6012), done.
        fatal: manifest 'default.xml' not available
        fatal: manifest default.xml not found
        ================================================================================
        Repo command failed: UpdateManifestError
        	Unable to sync manifest default.xml

指定清单: repo init git@192.168.7.3:RepoTest -m other_manifest.xml

    #download manifests
    ubuntu@SERVER4:/disk4/repoTest$ repo init -u git@192.168.7.3:manifest
    repo: reusing existing repo client checkout in /disk4/repoTest
    
    repo has been initialized in /disk4/repoTest
    
    #repo sync download all source
    ubuntu@SERVER4:/disk4/repoTest$ repo sync
    Fetching: 100% (2/2), done in 14.816s
    Updating files: 100% (1050/1050), done.
    Checking out: 100% (2/2), done in 5.283s
    repo sync has finished successfully.

附录(仅供参考)

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!
加入社区》https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0
1725651669715)]
[外链图片转存中…(img-mhxJCBPc-1725651669715)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!
加入社区》https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值