1.指定项目代码库中迭代列出全部ProductList(.git)到pro.log文件中

repo forall -c 'echo $REPO_PROJECT' | tee pro.log

命令解读:

// repo forall 遍历repo下所有的git库 ,-c执行命令 echo $REPO_PROJECT 打印出REPO_PROJECT变量(很明显遍历不同的git库时,变量REPO_PROJECT值不同)
// | 是管道:管道左边的命令的输出会作为右边命令的输入
// tee 命令从管道中读取输入数据,并同时 输出到界面 和文件 pro.log中(即一份输入,两份输出)

pro.log文件内容如下:(这里以高通源码部分project为例)

platform/abi/cpp
platform/art
platform/bionic
kernel/lk
platform/bootable/recovery
platform/build
platform/build/blueprint
platform/build/kati
platform/build/soong

.......

2.用 sed 命令在每一行的前面都加上相同的字符串,生成sh文件,用来在gerrit创建工程库

sed 's/^/ssh -p 29418 username@服务器IP gerrit create-project /' pro.log > pro.sh

命令解读:

//http://baike.baidu.com/link?url=tz1yS3XrNfe3cDTBo0QIwAJHFd1-WizvwdyVxCqCzTnhpM9HwfESclKAqj1X04_SO9OcPkG7ajinXNKf0MwkKa
//sed 命令用来替换字符串,每行都会处理, 用法:sed 's/oldstring/newstring/' 处理文件名(这里是pro.log)
// s 表示替换命令
// ^ 表示开头(oldstring)
//ssh -p 29418 username@服务器IP  gerrit create-project 是要替换的内容(newstring)
//即在每行的开头插入 ssh -p 29418 username@服务器IP  gerrit create-project 
// > 符号是重定向符号,没有该符号的话 ,之前替换后的内容会打印在标准输出上,即命令行中, 重定向后会输入到文件 pro.sh(没有会自动创建)(>> 也是重定向,但是会追加在文件末尾)

pro.sh文件内容如下:

ssh -p 29418 username@IP gerrit create-project platform/abi/cpp (在gerrit上创建新的project)
ssh -p 29418 username@IP gerrit create-project platform/art
ssh -p 29418 username@IP gerrit create-project platform/bionic
ssh -p 29418 username@IP gerrit create-project kernel/lk
ssh -p 29418 username@IP gerrit create-project platform/bootable/recovery
ssh -p 29418 username@IP gerrit create-project platform/build
ssh -p 29418 username@IP gerrit create-project platform/build/blueprint
ssh -p 29418 username@IP gerrit create-project platform/build/kati
ssh -p 29418 username@IP gerrit create-project platform/build/soong

3.将pro.sh授予可执行权限

chmod 777 pro.sh

4.执行pro.sh文件,在服务器上的gerrit/review_site/git 目录下生成空的仓库目录

./pro.sh

5.将所有的 project push 到服务器上的空的 git 仓库里,并输出push日志到push.log

(repo forall -c 'pwd && git push HostName:/$REPO_PROJECT HEAD:refs/heads/BranchName')2>&1 | tee push.log

命令解读:

//这里也是遍历 执行 git push HostName:/$REPO_PROJECT HEAD:refs/heads/BranchName 并将结果输出到 push.log中去
//说说 2>&1
0 表示stdin标准输入
1 表示stdout标准输出
2 表示stderr标准错误
//这里的 2>&1 就是将标准输出信息和 标准错误信息一起 通过管道传给 tee

6.Push OK的提示

To test:/amss/rpm_proc
[new branch] HEAD -> BranchName
/home/XXX/w0927/BranchName/slpi_proc
remote: Processing changes: refs: 1, done

7.查漏

通过命令 grep -iE "remote: Processing changes: refs: 1, done " push.log | wc -l

说明:ProjectList的count数(也就是pro.log的行数)与这里相等才是全部push到服务器上了

8.出错的project重新push

通过查询 log 发现/frameworks/base 这个 project push 出错,错误的日志在服务器的/review_site/logs/error_log 里有

git push ssh://HostName/frameworks/base HEAD:refs/heads/BranchName

9. vim pro.sh set nu设置vim显示行号
使用vim打开pro.sh文件
//在vi中 输入 : set nu 设置显示行号 , 重新打开vi,行号不会显示,需要一直显示的话需要更改vi的配置文件,自行百度 ,很简单

【Repo】推送一个已有的代码到新的 gerrit 服务器的更多相关文章

  1. 推送一个已有的代码到新的 gerrit 服务器

    1.指定项目代码库中迭代列出全部ProductList(.git)到pro.log文件中 repo forall -c 'echo $REPO_PROJECT' | tee pro.log pro.l ...

  2. oc学习之路----APNS消息推送从证书到代码(2015年4月26号亲试可用)

    前言:看这篇博客之前要准备:首先的有一个99刀的个人开发者账号或者199刀的企业开发者账号,其次你用的是apns消息推送,(本人之前四处打听有没有其他消息推送的方法:收获如下:首先如果想做到apns的 ...

  3. 推送通知/传感器/UIDynamic仿真(推送通知已适配iOS10)

    推送通知/传感器/UIDynamic 一.推送通知 1.推送通知简介 什么是推送通知 此处的推送通知与NSNotification没有任何关系 可以理解为,向用户推送一条信息来通知用户某件事情 作用: ...

  4. 一文了解服务端推送(含JS代码示例)

    常用的服务端推送技术,包括轮询.长轮询.websocket.server-sent-event(SSE) 传统的HTTP请求是由客户端发送一个request,服务端返回对应response,所以当服务 ...

  5. 信鸽推送.net 服务端代码

    //推送代码 private void send() { #region 安卓推送 XingeApp app = new XingeApp("accessId", "se ...

  6. 推送一个docker 使用阿里docker hub

    阿里docker hub 地址 打开容器镜像服务页https://cr.console.aliyun.com/cn-qingdao/namespaces 这个是我的私有库 配置加速 我这边用的也是阿里 ...

  7. $Django 支付宝支付,微信服务号推送消息 (测试需要把应用程序部署到服务器上)

    一 支付宝支付 大概 支付宝支付 正式环境:需要用营业执照去申请商户号,appid 测试环境:沙箱环境:https://openhome.alipay.com/platform/appDaily.ht ...

  8. python3 三行代码基于HTTP2完美实现APNS推送【详解】

    第一次做苹果APNS(Apple Push Notification service)推送,关于APNS推送原理以及证书的获取方式网上已经有许多资料,在此不做过多赘述,需要注意的是证书分为测试证书和正 ...

  9. 链接提交-js代码推送进化版

    百度站长平台提供链接索引的自动提交JS脚本已经有一段时日了.用百度自己的话讲:JS链接推送代码以网页为最小对象,服务于全平台多终端,PC站和移动站均可使用.安装代码的页面在任意平台(浏览器.微信.微博 ...

随机推荐

  1. CSDN编程挑战——《交替字符串》

    交替字符串 题目详情: 假设字符串str3可以由str1和str2中的字符按顺序交替形成,那么称str3为str1和str2的交替字符串.比如str1="abc",str2=&qu ...

  2. 【u025】贝茜的晨练计划

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] 奶牛们打算通过锻炼来培养自己的运动细胞,作为其中的一员,贝茜选择的运动方式是每天进行N(1 <= ...

  3. Android Studio 连接自己搭建的server 须要admin 的帐号的问题 SSH Password Login,please enter password for user git@git.

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/ ...

  4. jdk8-collect

    toMap 常用方式 public Map<Long, String> getIdNameMap(List<Account> accounts) { return accoun ...

  5. Tricks(四十七)—— 布尔矩阵(0-1矩阵)取反

    假定 X 是一个 0-1 元素构成的布尔矩阵,则对其取反,0 变成 1,1 变为 0(True 变为 False,False 变成 True),只需要一步简单的操作: Y = (X == False)

  6. linux的开机启动过程:

    简单视图 按下电源开关 开机自检(BIOS)弹笔记本logo的时候,检查cpu 硬盘 这些硬件问题 MBR引导 一般是通过硬盘启动系统 GRUB的菜单 黑底白字有个倒数计时 可以选择内核 yum命令可 ...

  7. 经典卷积神经网络的学习(一)—— AlexNet

    AlexNet 为卷积神经网络和深度学习正名,以绝对优势拿下 ILSVRC 2012 年冠军,引起了学术界的极大关注,掀起了深度学习研究的热潮. AlexNet 在 ILSVRC 数据集上达到 16. ...

  8. JPEG图像扩展信息读取和修改

    最近,项目需要使用jpg图像信息被写入(非水印),经过研究发现,Android已封装的读者jpg图片扩展信息api(ExifInterface). 通讯api住址:http://developer.a ...

  9. QT环境安装VS2013(系统环境里设置QTDIR,并添加VS2013的BIN目录)

    QT环境安装VS2013 文件名 1.qt5.5.1 qt-opensource-windows-x86-msvc2013-5.5.1.exe 2.qt vs插件 3.qt-vs-addin-1.2. ...

  10. 斯托克斯定理(Stokes' theorem)

    1. 几种形式 ∮∂SPdx+Qdy+Rdz=∬S∣∣∣∣∣∣cosα∂∂xPcosβ∂∂yQcosγ∂∂zR∣∣∣∣∣∣dS ∮∂Ωw=∬Ωdw 左边是内积: 右边是外积: 物理上的应用: ∮∂SE ...