从零开始搭建repo 与使用

从零开始搭建repo 与使用

一、repo 简介

在一个大型项目中,一般会拆成多个子系统来分开管理,每一个子系统都对应着一个git仓库。但在拉取整个项目的时候就需要一个一个去拉取仓库,或者要写一个shell脚本去拉取,这样做可以,但略显笨拙。于是repo来拯救了我们,r它是一个建立在git上的工具,本质其实是一个Python脚本,所以需要安装Python,像Android这样的系统也是用repo来管理的。

二、repo服务端的搭建

首先,在服务端只需要建立一个仓库名为manifest,我这里使用的是gitee(使用自己搭建的git服务器也是一样的)

image-20220722234127950

然后可以git clone到本地来操作。

image-20220722234759143

manifest中,创建一个.xml文件,该文件就决定了需要下载哪些仓库,如我创建了一个game.xml文件

image-20220722235230490

然后在其中输入:

<?xml version="1.0" encoding="UTF-8"?>
<manifest>
  <remote  name="gitee"
           fetch="https://gitee.com/chensmart" />
  <default revision="master"
           remote="gitee" sync-j="2" />
  <project path="data" name="game" revision="master" />
</manifest>
  • remote: 远程服务端,namerepo仓库名称,fetch 为 仓库url

  • default:设置每个项目默认的仓库和分支,remote指定了使用哪一个远程服务端

  • project: 每个项目的git仓库,path会指向下载后的仓库放在那个路径

  • name: 服务端git仓库名称,指向的是在fetch在已有的仓库名。

  • revision: 分支名称或者commit id

完成之后就提交上去。

image-20220723000948321

到此,服务端的任务就完成了,其实在服务端就是建了一个仓库而已,然后在其中创建了一个xml文件,并在其中指定了需要的仓库。

三、repo客户端的搭建

首先在客户端我们就需要安装repo的应用:

sudo snap install git-repo

使用自带源下载的repo会出问题,所以我们使用以下的方法

mkdir ~/bin
PATH=~/bin:$PATH
git clone https://gerrit-googlesource.lug.ustc.edu.cn/git-repo
cd git-repo/
cp repo ~/bin/
chmod a+x ~/bin/repo

这样在后续的使用中就不会出问题(血泪的教训啊)

然后,创建一个文件夹下载我们仓库,在其中使用repo初始化命令:

repo init -u https://gitee.com/chensmart/manifest -b master -m game.xml
  • -u(–manifest-url):设定清单库的Git服务器地址
  • -m(–manifest-name):当有多个清单文件时,指定清单库中的某个清单为有效的清单文件。默认为default.xml
  • -b(–manifest-branch):选择一个maniest仓库中的一个特殊的分支

然后输入用户名和密码

image-20220723092558427

现在文件夹下就有了.repo文件夹,repo init主要完成了如下操作:

  1. 完成repo工具的完整下载,现有的不过是repo的引导程序。初始化操作会从repo脚本里设定的镜像地址中克隆repo.git库到当前的目录下的.repo文件夹中。
  2. 克隆创建的清单库manifest.git,也就是我们在服务端创建的仓库,里面game.xml文件是repo工作的指引文件。

最后同步就是同步项目了,把manifest.git中的清单文件game.xml中所指引的仓库下载下来。

repo sync

image-20220723094245563

经过同步,指定仓库中的内容就可以下载下来了。

如果某个仓库同步过,repo sync就相当于git clone操作,把对应的远程仓库拷贝到本地来。

如果工程已经同步过,repo sync就相当于git remote update git rebase origin/branch

四、总结

其实repo的搭建并不复杂,服务端只需要建立一个仓库即可,而客户端就安装repo工具,对服务器和原项目不需要有多大的改动。

原理也很简单,其实就像一个shell脚本,通过.xml文件里的指引,把remotefetchprojectname组合起来就是一个仓库的链接,然后通过该链接去下载对应的仓库而已。当然,repo还有其他的功能如使用linkfile可以在同步完成后创建链接,还有其他功能,这些就有待读者去发掘了。

jectname组合起来就是一个仓库的链接,然后通过该链接去下载对应的仓库而已。当然,repo还有其他的功能如使用linkfile`可以在同步完成后创建链接,还有其他功能,这些就有待读者去发掘了。

  • 1
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
repo project 是指存储库项目,它是一种管理软件开发过程中代码存储和版本控制的工具。它使用版本控制系统(如Git)来跟踪和记录代码的变化,并将代码存储在一个中央位置,供团队成员随时查看和访问。repo project 可以帮助团队成员协同工作,共享代码,并保证每个人都使用相同版本的代码。 repo project 的主要功能包括代码分支管理、合并和冲突解决。它允许开发人员创建不同的分支,在每个分支上进行独立的开发工作,然后将更改合并到主分支中。如果多人同时修改同一个文件,可能会出现冲突,repo project 提供了解决冲突的机制,使团队能够协调一致地修改代码。 repo project 还提供了版本控制的历史记录和回滚功能。每次更改都会记录下来,开发人员可以随时查看先前的版本,并在需要时回滚到之前的版本。这有助于追踪和管理代码的演进,以及在出现问题时进行回退。 此外,repo project 还可以与其他工具集成,例如持续集成工具、项目管理工具和代码审查工具。这些集成可以进一步优化开发过程,提高团队的工作效率和代码质量。 综上所述,repo project 是一个强大的代码存储和版本控制工具,它可以帮助团队协同开发、追踪代码变化并保证代码的一致性和质量。在现代软件开发中,repo project 已成为必备的工具之一。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嘭噗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值