Gerrit报告未找到早期提交的更改ID

时间:2017-04-12 09:48:02

标签: git gerrit

我正在尝试为现有的GIT项目设置gerrit代码审核。

gerrit实例在我的本地端口 9090 上运行。

以下是我遵循的流程

  1. 在Gerrit中创建空项目(无需初始提交)。该项目的名称是 SpringBootBasic

  2. 在其他位置克隆远程git仓库

    git clone https://github.com/hemantvsn/boot.git 
    
  3. 由于gerrit需要每次提交更改ID,因此将提交消息挂钩复制到我的克隆存储库中

    hemant:-~/Projects/boot$ scp -p -P 29418        
    hemantvsn@127.0.0.1:hooks/commit-msg .git/hooks/commit-msg                                                                                  
                100% 4693     3.4MB/s   00:00    
    hemant:-~/Projects/hem$ 
    
  4. 添加了一个指向gerrit项目的新遥控器

    hemant:-~/Projects/boot$ git remote add gerrit 
    http://127.0.0.1:9090/SpringBootBasic
    
  5. 做了一个小改动并承诺了。 在此提交中填充了更改ID。

    hemant:-~/Projects/boot$ git log
    --------------------------------
    commit 98f1c6534492984364bdbc714407dbb8b39c06da
    Author: hemant <hemantvsn@gmail.com>
    Date:   Wed Apr 12 14:43:42 2017 +0530
    
    Minor text changes.
    
    Change-Id: I48e625c728add8be45b4dee0809c1d0d9804b7c8
    
    --------------------------------
    
    commit 5d485988e6d67394622bbd5d2d3146fc379b7ec3
    Author: hemant <hemantvsn@gmail.com>
    Date:   Wed Apr 5 13:22:09 2017 +0530
    
    Added sysouts
    --------------------------------
    
    commit 330c5c6ca2fed898146efe81f99b4ee91faa614f
    Author: hemant <hemantvsn@gmail.com>
    Date:   Wed Apr 5 13:03:40 2017 +0530
    
    changed index file
    --------------------------------
    
  6. 最后,当我要将我的更改推送到gerrit报告时,它仍然是 将错误显示为更改-Id未在提交中填充。

     hemant:-~/Projects/boot$ git push gerrit HEAD:refs/for/master
     Counting objects: 43, done.
     Delta compression using up to 4 threads.
     Compressing objects: 100% (29/29), done.
     Writing objects: 100% (43/43), 4.29 KiB | 0 bytes/s, done.
     Total 43 (delta 6), reused 0 (delta 0)
     remote: Resolving deltas: 100% (6/6)
     remote: Processing changes: refs: 1, done    
     remote: ERROR: [f905e04] missing Change-Id in commit message 
     footer
     remote: 
     remote: Hint: To automatically insert Change-Id, install the hook:
     remote:   gitdir=$(git rev-parse --git-dir); scp -p -P 29418 
     hemantvsn@127.0.0.1:hooks/commit-msg ${gitdir}/hooks/
     remote: And then amend the commit:
     remote:   git commit --amend
     remote: 
     To http://127.0.0.1:9090/SpringBootBasic
     ! [remote rejected] HEAD -> refs/for/master ([f905e04] missing 
     Change-Id in commit message footer)
     error: failed to push some refs to 
     'http://127.0.0.1:9090/SpringBootBasic'
    
    
     hemant:-~/Projects/boot$
    
  7. 它似乎指的是我在repo中的初始提交,这是在gerrit之前完成的。

     hemant:-~/Projects/boot$ git log --pretty=format:'%h %ad %s (%an)' --date=short 
    98f1c65 2017-04-12 Minor text changes. (hemantvsn)
    5d48598 2017-04-05 Added sysouts (hemant)
    330c5c6 2017-04-05 changed index file (hemant)
    90bb7be 2017-04-05 sonar file (hemant)
    eca2fc2 2017-03-30 test (hemant)
    f905e04 2017-02-03 Basic Spring Boot Project. (hemantvsn) **** This commit is referred in error report.
    

    请建议需要做什么 另请建议配置中的任何更改。

1 个答案:

答案 0 :(得分:1)

您需要在存储库的所有提交中拥有Change-Id,您只需将其添加到最后一个提交中。

将新存储库推送到Gerrit的正确方法是直接推送到分支(git push gerrit HEAD:refs / head / master)但是你需要获得许可才能这样做。请你的Gerrit管理员。