zoukankan      html  css  js  c++  java
  • 【Repo】推送一个已有的代码到新的 gerrit 服务器

    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的配置文件,自行百度 ,很简单

  • 相关阅读:
    [LeetCode] Longest Common Prefix
    [LeetCode] Path Sum II
    [LeetCode] Path Sum
    [LintCode] 寻找缺失的数
    [LintCode] 最多有多少个点在一条直线上
    [LeetCode] Max Points on a Line
    [LeetCode] Binary Tree Right Side View
    [LeetCode] Populating Next Right Pointers in Each Node II
    [LeetCode] Populating Next Right Pointers in Each Node
    apache php 60 503
  • 原文地址:https://www.cnblogs.com/wucaiyun1/p/6767759.html
Copyright © 2011-2022 走看看