zoukankan      html  css  js  c++  java
  • Gerrit

    1 - 主配置文件

    主配置文件位于$GERRIT_SITE/etc/gerrit.config目录

    [gerrit@mt101 ~]$ cat gerrit_testsite/etc/gerrit.config
    [gerrit]
        basePath = git
        canonicalWebUrl = http://192.168.16.101:8083/
        serverId = 0b911b9e-195a-46b0-a5cd-b407b776b344
    [container]
        javaOptions = "-Dflogger.backend_factory=com.google.common.flogger.backend.log4j.Log4jBackendFactory#getInstance"
        javaOptions = "-Dflogger.logging_context=com.google.gerrit.server.logging.LoggingContext#getInstance"
        user = root
        javaHome = /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-2.b14.el7.x86_64/jre
    [index]
        type = lucene
    [auth]
        type = HTTP
    [receive]
        enableSignedPush = false
    [sendemail]
        smtpServer = localhost
    [sshd]
        listenAddress = *:29418
    [httpd]
        listenUrl = http://192.168.16.101:8083/
    [cache]
        directory = cache
    [gerrit@mt101 ~]$
    
    

    2 - Gerrit的用户和群组

    Gerrit是基于群组来进行权限控制的,不同的群组具有不同的权限。
    每个用户属于一个或者多个群组。

    Gerrit系统自带群组

    • Anonymous Users:所有用户自动属于该群组,默认只有Read权限
    • Change Owner:某个提交的拥有者,具备所属变更的权限
    • Project Owners:项目拥有者,具备所属项目的权限
    • Registered Users:所有成功登录的用户自动属于该群组,具备投票权限(CodeReview +1-1)

    Gerrit预先定义的群组

    • Administrators:该群组的成员可以管理所有项目和Gerrit的系统配置
    • Non-Interactive Users:该群组的成员可以通过Gerrit界面进行操作,一般用于和第三方系统集成

    3 - 进程和服务控制

    [gerrit@mt101 ~]$ ll gerrit_testsite/bin/gerrit.sh
    -rwxr-xr-x 1 root root 16109 Dec 10 14:43 gerrit_testsite/bin/gerrit.sh
    [gerrit@mt101 ~]$ 
    [gerrit@mt101 ~]$ $GERRIT_SITE/bin/gerrit.sh
    Usage: gerrit.sh {start|stop|restart|check|status|run|supervise|threads} [-d site]
    [gerrit@mt101 ~]$
    

    4 - 查看日志

    日志所在目录:$GERRIT_SITE/logs/

    [gerrit@mt101 logs]$ pwd
    /home/gerrit/gerrit_testsite/logs
    [gerrit@mt101 logs]$ ll
    total 28
    -rw-r--r-- 1 root root  3052 Dec 10 15:12 error_log
    -rw-r--r-- 1 root root     0 Dec 10 14:44 gc_log
    -rw-r--r-- 1 root root     5 Dec 10 14:43 gerrit.pid
    -rw-r--r-- 1 root root    16 Dec 10 14:44 gerrit.run
    -rw-r--r-- 1 root root 13067 Dec 10 15:12 httpd_log
    -rw-r--r-- 1 root root     0 Dec 10 14:44 sshd_log
    [gerrit@mt101 logs]$
    

    5 - war包的命令

    war包在命令行下用很多可用命令。

    [gerrit@mt101 ~]$ ll
    total 67556
    -rw-r--r--  1 gerrit gerrit 69172528 Dec 10 13:04 gerrit-3.1.0.war
    -rwxr-xr-x  1 root   root         91 Dec 10 14:52 gerrit.password
    drwxr-xr-x 14 root   root        150 Dec 10 14:44 gerrit_testsite
    [gerrit@mt101 ~]$ 
    [gerrit@mt101 ~]$ 
    [gerrit@mt101 ~]$ sudo java -jar gerrit-3.1.0.war
    Gerrit Code Review 
    usage: java -jar gerrit-3.1.0.war command [ARG ...]
    ​
    The most commonly used commands are:
      init            Initialize a Gerrit installation
      reindex         Rebuild the secondary index
      daemon          Run the Gerrit network daemons
      version         Display the build version number
      passwd          Set or change password in secure.config
    ​
      ls              List files available for cat
      cat FILE        Display a file from the archive
    ​
    [gerrit@mt101 ~]$ 
    [gerrit@mt101 ~]$ sudo java -jar gerrit-3.1.0.war init -h
    init [--batch (-b)] [--delete-caches] [--dev] [--help (-h)] [--install-all-plugins] [--install-plugin VAL] [--list-plugins] [--no-auto-start] [--no-reindex] [--secure-store-lib VAL] [--show-stack-trace] [--site-path (-d) VAL] [--skip-all-downloads] [--skip-download VAL] [--skip-plugins]
    ​
     --batch (-b)           : Batch mode; skip interactive prompting (default:
                              false)
     --delete-caches        : Delete all persistent caches without asking (default:
                              false)
     --dev                  : Setup site with default options suitable for
                              developers (default: false)
     --help (-h)            : display this help text (default: true)
     --install-all-plugins  : Install all plugins from war without asking (default:
                              false)
     --install-plugin VAL   : Install given plugin without asking
     --list-plugins         : List available plugins (default: false)
     --no-auto-start        : Don't automatically start daemon after init (default:
                              false)
     --no-reindex           : Don't automatically reindex any entities (default:
                              false)
     --secure-store-lib VAL : Path to jar providing SecureStore implementation class
     --show-stack-trace     : display stack trace on failure (default: false)
     --site-path (-d) VAL   : Local directory containing site data
     --skip-all-downloads   : Don't download libraries (default: false)
     --skip-download VAL    : Don't download given library
     --skip-plugins         : Don't install plugins (default: false)
    ​
    ​
    [gerrit@mt101 ~]$
    
    

    6 - Gerrit解决冲突的提交

    如果不同的开发人员同时修改同一个文件并提交,那么这些提交都不会进入代码库。
    Gerrit会在页面显示“Conflicts With”或“Cannot Merge”信息来提示有冲突。

    处理方式1:

    • 简单粗暴地直接取消有冲突的提交,在需要修改时重新提交一个。

    处理方式2:

    1. 在本地执行git fetch命令更新最新的远端代码
    2. 执行git rebase命令获取具体的冲突信息
    3. 执行git mergetool命令手动解决冲突
    4. 执行git add指令重新添加修改的文件
    5. 执行git rebase -continue命令完成rebase过程
    6. 重新提交

    获取命令的用法帮助信息

    git fetch -h
    git rebase -h
    git rmergetool -h
    git add -h
    

    7 - 为Gerrit项目创建和删除分支

    Gerrit和GitLab集成后,在Gerrit上创建分支,GitLab也会自动同步该分支。
    但只能是单项同步(Gerrit--》GitLab),也就是说直接在GitLab上创建的分支不会自动同步到Gerrit上。
    建议在Gerrit和GitLab集成后,所有的操作都在Gerrit上完成。

    7.1 查看已有分支

    7.2 创建新分支


    7.3 删除分支

    点击要删除分支一行的DETELE按钮,根据提示操作即可。

    8 - 为Gerrit项目添加默认代码审核人

    一般情况下,每次提交时都需要手工添加Code Reviewer。
    通过reviewers插件,可以为指定项目或分支设置默认的Code Reviewer,在有代码提交时,Code Reviewer会接收到代码审核通知邮件。

    8.1 找到reviewers插件

    在GerritForge(https://gerrit-ci.gerritforge.com/),找到对应gerrit 版本的reviewers插件

    reviewers插件:
    https://gerrit-ci.gerritforge.com/job/plugin-reviewers-bazel-master/

    获得对应的jar下载地址
    https://gerrit-ci.gerritforge.com/job/plugin-reviewers-bazel-master/lastSuccessfulBuild/artifact/bazel-bin/plugins/reviewers/reviewers.jar

    8.2 放置插件并重启Gerrit服务

    将下载的插件(jar包)放置在$GERRIT_SITE/plugins目录下,然后重启Gerrit服务($GERRIT_SITE/bin/gerrit.sh restart),会自动加载此目录下的插件。

    [gerrit@mt101 ~]$ cd gerrit_testsite/plugins/
    [gerrit@mt101 plugins]$ pwd
    /home/gerrit/gerrit_testsite/plugins
    [gerrit@mt101 plugins]$ wget https://gerrit-ci.gerritforge.com/job/plugin-reviewers-bazel-master/lastSuccessfulBuild/artifact/bazel-bin/plugins/reviewers/reviewers.jar
    --2019-12-11 11:55:16--  https://gerrit-ci.gerritforge.com/job/plugin-reviewers-bazel-master/lastSuccessfulBuild/artifact/bazel-bin/plugins/reviewers/reviewers.jar
    Resolving gerrit-ci.gerritforge.com (gerrit-ci.gerritforge.com)... 8.26.94.23
    Connecting to gerrit-ci.gerritforge.com (gerrit-ci.gerritforge.com)|8.26.94.23|:443... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: 41911 (41K) [application/java-archive]
    Saving to: ‘reviewers.jar’
    ​
    100%[==========================================>] 41,911       118KB/s   in 0.3s   
    ​
    2019-12-11 11:55:23 (118 KB/s) - ‘reviewers.jar’ saved [41911/41911]
    ​
    [gerrit@mt101 plugins]$ 
    [gerrit@mt101 plugins]$ chmod 755 reviewers.jar 
    [gerrit@mt101 plugins]$ ll
    total 44
    -rwxr-xr-x 1 gerrit gerrit 41911 Nov 16 02:03 reviewers.jar
    [gerrit@mt101 plugins]$ 
    [gerrit@mt101 plugins]$ cd
    [gerrit@mt101 ~]$ sudo sh gerrit_testsite/bin/gerrit.sh restart
    Stopping Gerrit Code Review: OK
    Starting Gerrit Code Review: OK
    [gerrit@mt101 ~]$
    
    

    8.3 查看插件是否安装成功

    8.4 配置Reviewers


    Filter部分:"*"表示所有分支改动

    Reviewer部分:自动提示支持的用户名、邮箱名、群组名

    9 - 手动同步GitLab代码到Gerrit

    Gerrit和GitLab集成后,在Gerrit上创建分支,GitLab也会自动同步该分支。
    但只能是单项同步(Gerrit--》GitLab),也就是说直接在GitLab上创建的分支不会自动同步到Gerrit上。
    建议在Gerrit和GitLab集成后,所有的操作都在Gerrit上完成。

    如果不小心在GitLab端进行了代码的更新操作,就需要手工执行同步代码的命令。

    cd /home/gerrit/gerrit_testsite/git/${project}
    git fetch origin +refs/heads/*:refs/heads/* +refs/heads/*:refs/heads/* --prune
    

    10 - 删除Gerrit上的项目

    为防止误操作,在Gerrit界面无法直接删除项目。

    可以在后台将项目目录删除,然后刷新缓存,才可以完全移除。

    [gerrit@mt101 git]$ pwd
    /home/gerrit/gerrit_testsite/git
    [gerrit@mt101 git]$ ll
    total 0
    drwxr-xr-x 7 gerrit gerrit 119 Dec 10 14:43 All-Projects.git
    drwxr-xr-x 7 gerrit gerrit 119 Dec 11 12:26 All-Users.git
    drwxr-xr-x 7 gerrit gerrit 138 Dec 11 12:45 testrepo.git
    [gerrit@mt101 git]$ 
    [gerrit@mt101 git]$ rm -rf testrepo.git/
    [gerrit@mt101 git]$ 
    [gerrit@mt101 git]$ ssh -p 29418 admin@192.168.16.101 gerrit flush-caches --all
    [gerrit@mt101 git]$
    
    

    刷新页面

  • 相关阅读:
    一次线上bug引起的反思
    本地调试接口返回信息不对 以及 jar冲突问题
    404问题记录
    Intelij IDEA 配置Tomcat时找不到 “Application Server”
    java多线程处理问题
    DataTemplate和ControlTemplate的关系
    WP模板
    wp中的动画
    wp中的位图
    2013.7.22-7.28开发资料汇总
  • 原文地址:https://www.cnblogs.com/anliven/p/12019989.html
Copyright © 2011-2022 走看看