首页 > 其他分享 >git commit 不生成 changeId 解决方案

git commit 不生成 changeId 解决方案

时间:2023-04-08 16:11:54浏览次数:55  
标签:git -- changeId exit fi msg commit

1). 检查仓储 .git/hook 下面是否有 commit-msg 文件,如果没有可以到下面的地址下载,或者把其他同事的 commit-msg 文件拷贝到你的 .git/hook 重新commit即可。

http://review.cyanogenmod.org/tools/hooks/commit-msg
https://gerrit-review.googlesource.com/tools/hooks/commit-msg

如果有自己的gerrit-review服务器,可以直接在网址后面加上 /tools/hooks/commit-msg 即可下载。

添加后,每次执行git commit 都会自动在log里面生成 Change-Id,用于gerrit code review。

注意:下载 commit-msg 需要设置执行权限:#chmod a+x .git/hook/commit-msg

2). 如果是repo sync 下来的代码,随便找一个仓储,按上面的方法,检查是否存在 commit-msg 软链接(repo sync 是在每个仓储.git/hooks下面创建的软链接),如果不存在,修改工程目录下面 .repo/manifest.xml,注意这个xml文件也是软链接。

<remote  name="aosp" review="review.source.android.com" fetch=".." />
<default revision="master" remote="aosp" sync-j="4" />

注意必须添加上面的 review="review.source.android.com" 这句。至于为什么,可以查看.repo/repo 下面的 python脚本。

附: commit-msg

#!/bin/sh
# From Gerrit Code Review 3.6.0-rc4-360-g5a87dddd18
#
# Part of Gerrit Code Review (https://www.gerritcodereview.com/)
#
# Copyright (C) 2009 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

set -u

# avoid [[ which is not POSIX sh.
if test "$#" != 1 ; then
  echo "$0 requires an argument."
  exit 1
fi

if test ! -f "$1" ; then
  echo "file does not exist: $1"
  exit 1
fi

# Do not create a change id if requested
if test "false" = "$(git config --bool --get gerrit.createChangeId)" ; then
  exit 0
fi

if git rev-parse --verify HEAD >/dev/null 2>&1; then
  refhash="$(git rev-parse HEAD)"
else
  refhash="$(git hash-object -t tree /dev/null)"
fi

random=$({ git var GIT_COMMITTER_IDENT ; echo "$refhash" ; cat "$1"; } | git hash-object --stdin)
dest="$1.tmp.${random}"

trap 'rm -f "${dest}"' EXIT

if ! git stripspace --strip-comments < "$1" > "${dest}" ; then
   echo "cannot strip comments from $1"
   exit 1
fi

if test ! -s "${dest}" ; then
  echo "file is empty: $1"
  exit 1
fi

reviewurl="$(git config --get gerrit.reviewUrl)"
if test -n "${reviewurl}" ; then
  if ! git interpret-trailers --parse < "$1" | grep -q '^Link:.*/id/I[0-9a-f]\{40\}$' ; then
    if ! git interpret-trailers \
          --trailer "Link: ${reviewurl%/}/id/I${random}" < "$1" > "${dest}" ; then
      echo "cannot insert link footer in $1"
      exit 1
    fi
  fi
else
  # Avoid the --in-place option which only appeared in Git 2.8
  # Avoid the --if-exists option which only appeared in Git 2.15
  if ! git -c trailer.ifexists=doNothing interpret-trailers \
        --trailer "Change-Id: I${random}" < "$1" > "${dest}" ; then
    echo "cannot insert change-id line in $1"
    exit 1
  fi
fi

if ! mv "${dest}" "$1" ; then
  echo "cannot mv ${dest} to $1"
  exit 1
fi

标签:git,--,changeId,exit,fi,msg,commit
From: https://www.cnblogs.com/joy99/p/17298689.html

相关文章

  • git 出现 连接超时443的情况
    解决Failedtoconnecttogithub.comport443:connectiontimedout  1)取消代理gitconfig--global --unsethttp.proxygitconfig--global--unsethttps.proxy(2)获得成功!   ......
  • git
    我刚才提交了什么?如果你用 gitcommit-a 提交了一次变化(changes),而你又不确定到底这次提交了哪些内容。你就可以用下面的命令显示当前HEAD上的最近一次的提交(commit):(main)$ git show或者$ git log -n1 -p我的提交信息(commitmessage)写错了如果你的提交信息(......
  • github访问方法3
    1、首先下载FastGithub,windows客户可在百度网盘下载2、解压安装包,然后点击“FastGithub.UI.exe”启动即可参考资料:https://github.com/dotnetcore/FastGithub/releases......
  • GitHub默认分支问题
    github将默认分支由master改为main我们在push主分支时容易出现错误可以在仓库的setting中找到Branches在Defaultbranch中将默认分支改为master ......
  • 踩坑/github本地clone
    本机有多个项目;并且每个项目的网上仓库地址不一样,账户密码也不同。这样该如何使用git。首先每个项目的gitclone--local需要设置不同的user.email,user.name值(gitconfig--local-l查看仓库配置gitconfig--global-l查看用户配置gitconfig--system-l查看系统配......
  • Docker+Rancher + Harbor + GitLab + Jenkins 搭建CI/CD环境
    Docker+Rancher+Harbor+GitLab+Jenkins搭建CI/CD环境一.环境说明机器名称系统版本IP地址k8s版本docker版本k8s-rancher-205-10ubuntu22.04192.168.205.101.25.220.10.18k8s-master-205-11ubuntu22.04192.168.205.111.25.220.10.18k8s-worker01-205-12ubuntu22.04192.168.......
  • Git的使用介绍
    Git的使用1.git配置获取本机sshkey:ssh-keygen-t-C"<[email protected]>"配置全局name和email:gitconfig--globaluser.name"<yourName>"gitconfig--globaluser.email"<[email protected]>"2.clo......
  • 使用Drone+gitea配置自己的CICD流程
    什么是CICDCICD一般包含三个概念:持续集成(ContinuousIntegration,CI),持续交付(ContinuousDelivery),持续部署(ContinuousDeploy)。他是一种软件开发实践,核心是通过引入自动化的手段来提高软件交付效率。其最终目的是为了让工程师更快,更高质量,更简单的交付软件。持续集成在传统软......
  • python操作git
    安装模块pip3installgitpython#coding:utf-8importosfromgit.repoimportRepofromgit.repo.funimportis_git_dir#pip3installgitpythonclassGitRepository(object):"""git仓库管理"""def__init__(self,......
  • 【Git分布式版本控制工具-补充&新增IDEA操作】
    本文纲要一、Git常用命令1、Git全局设置【补充】2、获取Git仓库3、本地仓库操作4、远程仓库操作5、分支操作6、标签操作【补充】二、在IDEA中使用Git【新增】1、在IDEA中配置Git2、Git仓库操作3、.gitignore文件4、本地仓库操作5、远程仓库操作6、分支操作一、Git常用......