zoukankan      html  css  js  c++  java
  • remote rejected] HEAD -> refs/for/v2.5 (change 256860 closed) gerrit报错原因

    _gen_ChangeIdInput() {
        echo "tree `git write-tree`"
        if parent=`git rev-parse "HEAD^0" 2>/dev/null`
        then
            echo "parent $parent"
        fi
        echo "author `git var GIT_AUTHOR_IDENT`"
        echo "committer `git var GIT_COMMITTER_IDENT`"
        echo
        printf '%s' "$clean_message"
    } 
    _gen_ChangeId() {
        _gen_ChangeIdInput |
        git hash-object -t commit --stdin
    } 

    _gen_ChangeIdInput 函数输出的信息包括:tree parent author committer 以及 log信息原文。把这些输出到命令git hash-object -t commit --stdin 生成一个40位的哈希值,然后这个哈希值,经过awk这一串处理后,前面加上了 Change-ID: 最后就形成了 Change-Id: I7242a41d8c77df44d48aa97c9f1c9c502270bbd8 这样子的change-id内容。

    出现如题所示的报错是因为历史记录里出现了两个相同的Change-ID。

    回想操作过程,之前提交的时候因为有merge,所以在gerrit服务器上审核的时候,我给abandoned了,因此从新处理提交的时候就出现了相同的tree, parent, author, committer以及log原文,这也就不难怪change-id也相同了。

    添加一次可能导致Change-ID相同的情况,新的分支的提交是从另外的分支上cherry-pick过来的,所以当abandoned一次之后,再次cherry-pick时,Change-ID作为提交记录一并cherry-pick过来了,所以会重复。方法是删除Change-ID,然后重新git commit --amend重新生成新的Change-ID

  • 相关阅读:
    Badboy录制脚本时,提示脚本错误解决方法
    Python数据类型_列表
    Wannafly Primary School Students训练记录
    Deadline队伍训练实录
    2018 German Collegiate Programming Contest (GCPC 18)
    2016ccpc杭州
    2016 ICPC 大连
    2017CCPC Final (哈尔滨)
    2017CCPC 长春
    2017 CCPC 杭州
  • 原文地址:https://www.cnblogs.com/fordreamxin/p/5315467.html
Copyright © 2011-2022 走看看