.gitignore 与 Change-Id 的生成
来源:互联网 发布:isp网络数量 编辑:程序博客网 时间:2024/06/03 21:32
#Mac.DS_Store#Java*.class# XCode*.moved-asidebuild/**.xcworkspace*.mode1v3*.mode2v3*.pbxuser!default.xcworkspace!default.mode1v3!default.mode2v3!default.pbxuser*.perspectivev3profilexcuserdata.idea/*#Cocoa pods*.oldPods/*#cocos2d-xlibs/bin/obj/assets/gen/out/.classpath.project.cproject# backup files*.bak*.bak[0-9][0-9]*.orig*.orig[0-9][0-9]# source packages - anywhere*.tar.bz2*.tar.gz*.tar*.tgz*.gtgz
commit-msg 放在.git/hook 下面
#!/bin/sh# From Gerrit Code Review 2.9.3## Part of Gerrit Code Review (http://code.google.com/p/gerrit/)## 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.#unset GREP_OPTIONSCHANGE_ID_AFTER="Bug|Issue"MSG="$1"# Check for, and add if missing, a unique Change-Id#add_ChangeId() {clean_message=`sed -e '/^diff --git .*/{s///q}/^Signed-off-by:/d/^#/d' "$MSG" | git stripspace`if test -z "$clean_message"thenreturnfiif test "false" = "`git config --bool --get gerrit.createChangeId`"thenreturnfi# Does Change-Id: already exist? if so, exit (no change).if grep -i '^Change-Id:' "$MSG" >/dev/nullthenreturnfiid=`_gen_ChangeId`T="$MSG.tmp.$$"AWK=awkif [ -x /usr/xpg4/bin/awk ]; then# Solaris AWK is just too brokenAWK=/usr/xpg4/bin/awkfi# How this works:# - parse the commit message as (textLine+ blankLine*)*# - assume textLine+ to be a footer until proven otherwise# - exception: the first block is not footer (as it is the title)# - read textLine+ into a variable# - then count blankLines# - once the next textLine appears, print textLine+ blankLine* as these# aren't footer# - in END, the last textLine+ block is available for footer parsing$AWK 'BEGIN {# while we start with the assumption that textLine+# is a footer, the first block is not.isFooter = 0footerComment = 0blankLines = 0}# Skip lines starting with "#" without any spaces before it./^#/ { next }# Skip the line starting with the diff command and everything after it,# up to the end of the file, assuming it is only patch data.# If more than one line before the diff was empty, strip all but one./^diff --git / {blankLines = 0while (getline) { }next}# Count blank lines outside footer comments/^$/ && (footerComment == 0) {blankLines++next}# Catch footer comment/^\[[a-zA-Z0-9-]+:/ && (isFooter == 1) {footerComment = 1}/]$/ && (footerComment == 1) {footerComment = 2}# We have a non-blank line after blank lines. Handle this.(blankLines > 0) {print linesfor (i = 0; i < blankLines; i++) {print ""}lines = ""blankLines = 0isFooter = 1footerComment = 0}# Detect that the current block is not the footer(footerComment == 0) && (!/^\[?[a-zA-Z0-9-]+:/ || /^[a-zA-Z0-9-]+:\/\//) {isFooter = 0}{# We need this information about the current last comment lineif (footerComment == 2) {footerComment = 0}if (lines != "") {lines = lines "\n";}lines = lines $0}# Footer handling:# If the last block is considered a footer, splice in the Change-Id at the# right place.# Look for the right place to inject Change-Id by considering# CHANGE_ID_AFTER. Keys listed in it (case insensitive) come first,# then Change-Id, then everything else (eg. Signed-off-by:).## Otherwise just print the last block, a new line and the Change-Id as a# block of its own.END {unprinted = 1if (isFooter == 0) {print lines "\n"lines = ""}changeIdAfter = "^(" tolower("'"$CHANGE_ID_AFTER"'") "):"numlines = split(lines, footer, "\n")for (line = 1; line <= numlines; line++) {if (unprinted && match(tolower(footer[line]), changeIdAfter) != 1) {unprinted = 0print "Change-Id: I'"$id"'"}print footer[line]}if (unprinted) {print "Change-Id: I'"$id"'"}}' "$MSG" > "$T" && mv "$T" "$MSG" || rm -f "$T"}_gen_ChangeIdInput() {echo "tree `git write-tree`"if parent=`git rev-parse "HEAD^0" 2>/dev/null`thenecho "parent $parent"fiecho "author `git var GIT_AUTHOR_IDENT`"echo "committer `git var GIT_COMMITTER_IDENT`"echoprintf '%s' "$clean_message"}_gen_ChangeId() {_gen_ChangeIdInput |git hash-object -t commit --stdin}add_ChangeId
0 0
- .gitignore 与 Change-Id 的生成
- Change-Id自动生成脚本
- 怎么自动生成change-id
- 在线生成.gitignore的工具
- google gerrit repo, git commit如何自动生成Change-Id
- 关于gitignore文件的创建与使用
- 关于gitignore文件的创建与使用
- gitignore自动生成
- 自动生成.gitignore文件
- 自动生成.gitignore
- 生成唯一的ID
- php 生成唯一id的案例与思路
- 分布式系统中生成全局ID的总结与思考
- 【唯快不破】打造快速生成.gitignore文件的命令
- git --commit-msg缺失导致的missing Change-Id问题
- git push 遇到missing change id的问题
- gitignore.io ------ 一个根据语言,工具或者平台来智能自动生成gitignore文件的在线工具
- Hibernate的ID生成策略
- 过河卒
- Android权限 uses-permission
- HttpClient大并发下Timeout waiting for connection from pool优化方案
- 【oracle调优】优化全表扫---降低高水位
- C#中HttpWebRequest的用法详解
- .gitignore 与 Change-Id 的生成
- Git常用命令
- 重磅教程!帮你全面彻底搞定MATERIAL DESIGN的学习笔记
- 修改mybatis-generator-1.3.2源码实现自定义代码生成详解
- 【Java并发编程】深入分析ThreadLocal(八)
- JSP自定义简单标签入门之带有属性
- 汉字转拼音,处理数字与其他符号到#
- 【oracle调优】in和exists
- cocos studio的node文件