repo的用法

Linux repo基本用法 搭建自己的repo仓库[服务端] 使用 Repo 的好处在于能够方便地同时处理和同步多个相关联的 Git 仓库,简化复杂项目中跨仓库的日常版本控制任务。 阅读详情

    最近在工作中遇到一些问题:做支持mtk的方案时,手头有好几个平台的android原生代码,我们做的二次修改之前在平台1上做了,现在要移植到其他的平台中去。

    问题来了:每个平台都有十几个代码仓库,如果一个个的git cherry-pick肯定要累疯,少说都要几百次的操作啊;直接remote添加仓库,然后merge分支又会把其他组成员的修改代入,怎么办呢?

    解决思路,首先是要我们组成员的修改从整个修改中提炼出来,然后是把这些修改通过repo这个git批处理的工作,以最小的工作量移到其他平台上。

    先来聊聊第一步,如何把在有其他人参与修改的情况下,只把我们组成员的修改提炼出来?

    写了一个简单脚本,上一些关键代码:

#!/usr/bin/env python

import os

def Main():
    logs_cmd="git log --no-merges --pretty=tformat:%H:%ci:%cn" #平台1上做了修改,移植修改到平台2.平台1 remote添加平台2仓库,并切到该分支,使该命令列出所有平台1的独立修改
    ui_committer=["A","B","C","D","E"] #我们组成员,名字做了代码混淆(*^__^*) ,用来过滤是自己人的提交
    
    commit_list=[]

    logs_file = "logs_file"
    new_py="new_py.py"
    
    if not os.path.exists(".git"):
        print "no git !!!!"
        return

    os.system(logs_cmd+" > " +logs_file)
    if os.path.exists(new_py):
            os.system("rm -rf "+new_py)
    f1 = open(new_py, 'w')
    f2 = open(logs_file, "r")

    lines = f2.readlines()
    print len(lines)
    for i in range(len(lines)-1, -1, -1):
        print str(i)+":"+lines[i]
        for committer in ui_committer:
            if lines[i].find(committer) != -1:
               f1.write(lines[i])

    f1.close()
    f2.close()


if __name__ == "__main__":
    Main()


   好了,这个修改搞出来,我们把平台2先移植掉,用你喜欢的方式提交,push或者upload。我们现在还剩第二步,怎么多个平台也获得这个移植收益,利用repo写了一个shell命令集。

repo forall -c 'git remote add 2 hello:platform_kk_lt_82_92/$REPO_PATH;git pull 2'
repo forall -c 'git remote add 3 hello:platform_kk_lt_82_92_ds/$REPO_PATH;git pull 3'
repo forall -c 'git remote add 4 hello:platform_kk_95_ds/$REPO_PATH;git pull 4'
repo forall -c 'git co -b 2 remotes/lte/tphone;git merge remotes/hello/tphone;git push 2 HEAD:refs/for/tphone'
repo forall -c 'git co -b 3 remotes/lte_ds/tphone;git merge remotes/hello/tphone;git push 3 HEAD:refs/for/tphone'
repo forall -c 'git co -b 4 remotes/95/tphone;git merge remotes/hello/tphone;git push 4 HEAD:refs/for/tphone'


   借机聊一下repo。对我来讲,repo就是批处理git的一个脚本,当之无愧的仓库管理员。init,sync等常用命令不在这次的讨论范围,今天主要聊一下repo forall,帮助文档可以键入repo help forall。比如我自己经常用的命令 repo forall -c "git co . ; git clean -df",可以一键使整个项目下的各仓库干净如新。

   repo forall -c 可执行的操作不仅仅局限于对git操作,可以执行任何的shell命令,这也大大扩展了它的使用范围。本次多平台移植中,它可是立了大功。上面的代码段中,我们的思路是先给每个仓库添加好remote仓库和建起对应分支,减少了不少工作量,之后可以通过git merge或者cherry-pick合并平台2我们挪过去的修改(这部分我隐去了),之后就是一个批处理的提交,这一部分特别有成就感啊~~~

    全文完

   

Repo仓库批量制作patch合入Patch 背景:有的平台SDK使用的是repo sync的方式同步代码,当需要将平台更新代码同步到自己项目中时就比较麻烦,整个仓库比较的话Android代码量太大,太耗时,repo又没提供批量制作patch的命令。 所以开发了自动化制作patch的脚本,以及使用教程 原理: RK代码利用repo sync 同步,不是发的差分包,无法及时同步到自己的项目中,所以本地 保存一份RK原生Code,保持和RK同步,然后制作出差分包再打patch到自己的项目中。 (1)首先需要保存原始Code的oldmanifest . 阅读详情

相关推荐

海洋与地质地理信息数据下载网站汇总集锦

各种海洋与地质地理信息数据集合

qq_36980284的博客 1268

【repo使用指南】

repo 是对分布式版本控制系统 Git 中部分命令的封装,是一个命令行工具。它可以管理多个 git 项目(例如,在 Android 4.2 中,就包含了 329 个项目,每一个项目都是一个独立的 Git 仓库。这意味着,如果我们要创建一个分支来做 feature 开发,那么就需要到每一个子项目去创建对应的分支。这显然不能手动地使用 git 到每一个子项目里面去创建分支,必须要采用一种自动化的方式来处理。这些自动化处理工作就是由 repo 工具来完成的,这也是 repo 出现的原因之一)。

Sugar_wolf的博客 9150

CrossOver实战:在Mac上流畅运行《梦幻西游》端游与搬砖指南

在跨平台应用开发与系统兼容性领域,如何让为特定操作系统设计的软件在其他平台上运行,是一个经典的技术挑战。其核心原理在于通过兼容层或转译技术,将程序的系统调用和图形接口指令实时转换为目标系统能理解的格式。这项技术的价值在于极大地扩展了硬件设备的软件生态,让用户无需依赖虚拟机或双系统即可无缝使用关键应用。在游戏、专业工具等场景中,这能显著提升工作效率和用户体验。本文以经典端游《梦幻西游》为例,详细解析如何在搭载Apple Silicon或Intel芯片的Mac上,借助CrossOver这一成熟的兼容层方案,构建

weixin_30129025的博客 561

工具之git补丁操作

情况说明:        当你有两个repo:repo1和repo2,并且你在repo1中对代码进行了修改,现在想把repo1的修改添加到repo2中,但总不会一个一个手动修改吧,git就提供了打补丁的工具,将改进的部分进行增删。操作如下:        1.先在repo1中checkout到修改后的branch,再修改提交commit,而后format-patch生成补丁,并将目录中的0001-...

qccz123456的博客 845

BDD测试之Behave使用入门

BDD测试(Behavior-Driven Development Testing)是一种基于“行为驱动开发”(BDD)理念。

想要成为酷盖但是失败的小明 580

利用ArcGIS快速生成等高线边界,完成地形图拼图

地形图边界一般在CAD中手动绘制,然而,一幅边缘复杂的地形图边界的绘制需要花费大量时间和精力,为了减少重复性工作,提高效率,用ArcGIS软件可以自动生成实测地形图的边界

yl14774636230的博客 9068

repo使用 git使用

repo使用 git使用

Jun_P的博客 3785

Matlab蒙特卡洛模拟二维伊辛模型相变过程

一、什么是伊辛模型 伊辛(Ising)模型是描述磁系统相变最简单的模型,但模型里自旋之间的相互作用赋予了它奇妙的特性,最有趣的就是对称性破缺。这一模型可以被推广用于研究连续的量子相变、基本粒子超弦理论、动力学临界行为等,甚至被认为可以描述深林火灾、交通拥堵、舆论传播等社会经济现象。 如图,每个格点的方向只有向上或向下两者状态,但临近的自旋之间有相互作用,而且点阵可以是一维、二维、三维、甚至更高维...

http://www.icfgblog.com/ 2万+

Repo 详解

1 repo介绍 Android使用Git作为代码管理工具,开发了Gerrit进行代码审核以便更好的对代码进行集中式管理,还开发了Repo命令行工具,对Git部分命令封装,将百多个Git库有效的进行组织。 1.1清单库文件介绍 一个清单库可以包含多个清单文件和多个分支,每个清单文件和分支都有对应的版本。清单文件以xml格式组织的。举个例子: Øremote元素,定义了名为korg的远程版本库,其库的基址为git://172.16.1.31/ Ø...

weixin_38503885的博客 3990

INMP441麦克风避坑指南:为什么你的I2S录音总有杂音?(附示波器调试技巧)

本文针对INMP441麦克风与ESP32等MCU通过I2S接口连接时常见的录音杂音问题,提供了一套系统的硬件调试指南。文章深入剖析了电源纹波、信号完整性、接地环路及时钟抖动四大噪声根源,并详细讲解了如何使用示波器进行逐层排查,给出了增加LC滤波、串联阻尼电阻、优化布局布线等切实可行的解决方案,帮助开发者从根本上提升音频质量。

k0l1m2n3o的博客 1022

MIL图像处理那些事:MIL的安装和MIL工具箱

MIL图像处理那些事:MIL的安装和测试,如何用C#使用MIL

十多年IT经验,专注机器视觉,智能制造半导体行业 5273

repo 命令的用法

下载 repo 的地址: http://android.git.kernel.org/repo ,可以用 wgethttp://android.git.kernel.org/repo 或者 curl http://android.git.kernel.org/repo >~/bin/repo  来下载 repo , chmod a+x ~/bin/repo  用repo sync 在抓去 a

荷兰风车 845

AI Agent Harness实时监控大屏搭建实战

本文将以目前主流的AI Agent管控框架Harness为基础,结合React、ECharts、WebSocket技术,手把手带你搭建一套完整的实时监控大屏,覆盖全局概览、状态分布、工具调用统计、异常告警、实时日志等核心功能,不需要复杂的底层开发,复制代码就能快速跑通。本文我们从需求出发,先梳理了AI Agent的核心监控指标,然后搭建了监控大屏的静态布局,逐个实现了各个图表,对接了Harness的实时数据源,最后加了交互和告警功能,完整走了一遍监控大屏从设计到落地的全流程。

大数据洞察的博客 174

repo命令几种用法

git用来管理一个长裤Android 为企业提供一个新的市场,无论大企业,小企业都是处于同一个起跑线上。研究 Android 尤其是 Android 系统核心或者是驱动的开发,首先需要做的就是本地克隆建立一套 Android 版本库管理机制 ...

fangye945a的博客 2658

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

repo入门和基本用法

repo是什么? 官方的定义:Repo是谷歌用Python脚本写的调用git的一个脚本,可以实现管理多个git库。 个人理解:repo这个工具,是一个脚本。这个脚本是对git库的管理。 类似什么呢,类似makfile。功能是使你简单一敲make,就ok了。repo 呢,简单一敲,repo init -u <url> <option> 。url 指的是 manifest仓库地址,option 一般是所在分支,比如-b 你的分支,就行了。再执行一句,repo sync 。刷刷刷,等

Jason_Lee155的博客 4万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

repo 的一些用法和理解

注:repo只是google用Python脚本写的调用git的一个脚本,主要是用来下载、管理Android项目的软件仓库。(也就是说,他是用来管理给git管理的一个个仓库的)下载 repo 的地址: http://android.git.kernel.org/repo ,可以用以下二者之一来下载 repowget http://android.git.kernel.org/repo或者 curl http://android.git.kernel.org/repo > ~/bin/repo  下载完成后须修

amor2006的专栏 949

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Repo的用法总结

Repo的用法总结 repo init -u [url]:指定要从中检索清单代码库的网址 例:repo init -u https://android.googlesource.com/platform/manifest -m [xxx.xml]:在代码库中选择清单文件。如果未选择任何清单名称,则会默认选择 default.xml 例:repo init -m LA.UM.9.3.r1-02300-sdm845.0.xml -b [manifest-branch]:指定修订版本,即特定的 manif

qq_40163418的博客 2097

repo 的用法

下载 repo 的地址: http://android.git.kernel.org/repo ,可以用 wget http://android.git.kernel.org/repo 或者 curl http://android.git.kernel.org/repo >~/bin/repo  来下载 repo , chmod a+x ~/bin/repo 用repo sync 在抓去

free2o的专栏 4万+

repo的用法(zz)

repo的用法(zz) 注:repo只是google用Python脚本写的调用git的一个脚本,主要是用来下载、管理Android项目的软件仓库。(也就是说,他是用来管理给git管理的一个个仓库的) 下载 repo 的地址: http://android.git.kernel.org/repo ,可以用以下二者之一来下载 repo wget http://android.git.

Android Scanner 的空间 1075

Git之repo sync -c与repo sync -dc用法区别(四十八)

本篇目的:Git之repo sync -c与repo sync -dc用法区别Repo是一款由Google开发的版本控制系统,主要用于管理大型软件项目。它基于Git,提供了更为高级的功能,使得开发者能够更加方便地管理多个Git仓库。Repo命令是Repo工具的核心,通过一系列子命令,实现对项目的有效管理。首先,安装Repo工具是使用它的前提。用户可以从Repo的官方网站下载repo脚本,并将其放置在合适的位置。接下来,配置环境变量,使其能够正常运行。repo 。

Android系统攻城狮 3251

repo 用法

repo的用法(zz)     注:repo只是google用Python脚本写的调用git的一个脚本,主要是用来下载、管理Android项目的软件仓库。(也就是说,他是用来管理给git管理的一个个仓库的) 下载 repo 的地址: http://android.git.kernel.org/repo ,可以用以下二者之一来下载 repo wget http://android.git.

jkren08的专栏 796
上一篇: vim插件之lookupfile
下一篇: 如何高雅的旋转textview文字显示
byszy
博客等级 码龄17年 42粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值