计算机系统应用教程网站

网站首页 > 技术文章 正文

总结repo常用命令

btikc 2024-09-09 01:38:57 技术文章 19 ℃ 0 评论

我们日常工作开发的项目代码目录错综复杂,如果单单用git去管理代码的时候,太费时间,尤其是面对Android庞大的项目工程的代码,用git简直是灾难,这时候就要用到repo来管理项目代码,repo其实git的父亲可以这么说,repo命令可以对所有的有git仓库的目录进行操作

repo工作流程

repo 工具分为两个部分,一部分是 repo 引导脚本,另一部分是 repo 代码。repo 引导脚本里面设置有一个指向 repo 代码的地址,通过执行repo init -u URL [OPTIONS](如$ repo init -u https://android.googlesource.com/platform/manifest -b pzy -m default.xml ),所以repo管理的核心就在于Manifest

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>

Remote

远程仓库地址配置,可以多个。

name: 名字,也用于子仓库的 git remote 名称(.git/config 里的 remote)

alias: 别名,可省略,建议设为 origin, 设置了那么子仓库的 git remote 即为此名,方便不同的 name 下可以最终设置生成相同的 remote 名称

fetch: 仓库地址前缀,即 project 的仓库地址为: remote.fetch + project.name

pushurl: 一般可省略,省略了则直接用 fetch

review: Gerrit code review 的地址,如果没有用 Gerrit 则不需要配置(也就不能用 repo upload 命令了)

revision: 使用此 remote 的默认分支


repo基础命令

repo命令

等同git命令

备注

repo init -u

初始化

repo sync

git pull

同步代码

repo upload

git push

上传代码

repo forall

多仓执行

repo start

git checkout -b

创建并切换分支

repo checkout

git checkout

切换分支

repo status

git status

状态查询

repo branches

git branch

分支查询

repo diff

git diff

文件对比

repo prune

删除合并分支

repo stage –i

git add --interactive

添加文件到暂存区

repo abandon

git branch -D

删除分支

repo version

查看版本号


这里用的最多的是多仓执行指令repo forall和repo status。

多仓执行且分支
repo forall -c "git checkout xxx"
repo forall -c "git branch -D yyy"
repo forall -c "git checkout xxx"
repo forall -c "git status"

repo status
repo status -i "指定目录下.git仓库"

repo拉取同步仓库万能命令

repo init -u https://android.googlesource.com/platform/manifest -b pzy -m default.xml && repo sync && repo start pzy --all

这句命令就是说初始化url的default.xml文件中所有git仓库切到pzy分支,并在本地创建pzy分支开始同步代码

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表