GIT:如何添加后缀以仅提交提交范围内的消息(如果尚未存在后缀)?

马库斯

我正在尝试根据以下条件编辑该范围内的所有提交消息:

  • 如果消息包含“作业:”。保留消息原样。
  • 如果消息中不包含该消息,则将其添加到末尾,并根据提交作者添加一行。

换句话说,我希望所有提交都具有这样的后缀:

Jobs:
<author_job>

我想到了这样的事情:

#!/bin/bash

if [ "$#" -lt "2" ]; then
    echo Syntax: $0 \<initial commit\> \<final commit\>
    exit
fi

INITIAL_COMMIT=$1
FINAL_COMMIT=$2

FILTER="
    ORIGINAL_COMMIT=\`cat\` &&
    echo \${ORIGINAL_COMMIT} &&
    if [ \"\${ORIGINAL_COMMIT/\"Jobs:\"}\" == \"\${ORIGINAL_COMMIT}\" ]; then
        echo
        echo Jobs:
        case "\${GIT_AUTHOR_EMAIL}" in
            \"[email protected]\") echo \"JOB_ID_USER_1\" ;;
            \"[email protected]\") echo \"JOB_ID_USER_2\" ;;
            \"[email protected]\") echo \"JOB_ID_USER_3\" ;;
            *)                     echo UNKNOWN ;;
        esac
    fi
"

echo Running git filter branch
git filter-branch --msg-filter "${FILTER}" ${INITIAL_COMMIT}..${FINAL_COMMIT}

但是我在检测提交消息是否已经具有后缀时遇到了麻烦。没有if条件,它确实可以很好地工作,但是它将后缀添加到已经具有该条件的消息中。

在这种情况下,这是过滤器:

FILTER="
    cat &&
    echo &&
    echo Jobs: &&
    case "\${GIT_AUTHOR_EMAIL}" in
        \"[email protected]\") echo \"JOB_ID_USER_1\" ;;
        \"[email protected]\") echo \"JOB_ID_USER_2\" ;;
        \"[email protected]\") echo \"JOB_ID_USER_3\" ;;
        *)                              echo UNKNOWN ;;
    esac
"

有谁知道如何解决这个问题?

我见过有人在做python脚本来解决类似的问题。这是个好主意吗?

谢谢。

马库斯

正如@Kristján所建议的那样,可以使用case来搜索子字符串。

FILTER="
    ORIGINAL_COMMIT=\`cat\` &&
    case "\${GIT_AUTHOR_EMAIL}" in
        \"[email protected]\") JOB_ID=\"JOB_ID_USER_1\" ;;
        \"[email protected]\") JOB_ID=\"JOB_ID_USER_2\" ;;
        \"[email protected]\") JOB_ID=\"JOB_ID_USER_3\" ;;
        *)                     JOB_ID=\"UNKNOWN\" ;;
    esac &&
    case \"\${ORIGINAL_COMMIT}\" in
        *Jobs:*) ;;
        *)
            echo
            echo Jobs:
            echo \"\t\${JOB_ID}\"
    esac
"

也可以使用python解决此问题。比上面的解决方案麻烦一些,但由于使用的是python,它还为您提供了更多功能。

PWD=`pwd`

FILTER="
    ORIGINAL_COMMIT=\`cat\` &&
    case "\${GIT_AUTHOR_EMAIL}" in
        \"[email protected]\") JOB_ID=\"JOB_ID_USER_1\" ;;
        \"[email protected]\") JOB_ID=\"JOB_ID_USER_2\" ;;
        \"[email protected]\") JOB_ID=\"JOB_ID_USER_3\" ;;
        *)                     JOB_ID=\"UNKNOWN\" ;;
    esac
    echo \"\${ORIGINAL_COMMIT}\" | ${PWD}/Process_Commit.py \${JOB_ID}
"

python脚本(Process_Commit.py):

#!/usr/bin/python
import sys

job_id = sys.argv[1]

adjust = True
for line in sys.stdin:
    sys.stdout.write(line)
    if line.find("Jobs:") != -1:
        adjust = False

if adjust == True:
    print
    print "Jobs:"
    print "\t",job_id

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在后缀日期范围内查找文件

来自分类常见问题

如何获取git以显示作者日期在指定日期范围内的提交?

来自分类Dev

如果我不在范围内,如何添加 wifi 连接

来自分类Dev

Git提交消息自动添加报价

来自分类Dev

在Flask中提交表单时如何检索范围内的ORM对象

来自分类Dev

如果不存在,则在日期范围内添加默认值(SQL - BIGQUERY)

来自分类Dev

Git如何编辑提交消息并保留旧的提交日期

来自分类Dev

Git:如何修改 HEAD^^ 提交的内容(不是提交消息)

来自分类Dev

一个`git log`标记的提交仅如何提交?

来自分类Dev

提交时如何获取git commit消息?

来自分类Dev

如何自动接受git的默认提交消息?

来自分类Dev

如何退出git merge询问提交消息?

来自分类Dev

仅获取基础分支中不存在的提交范围

来自分类Dev

Git提交消息问题

来自分类Dev

Git提交消息

来自分类Dev

如何撤消尚未推送的提交?

来自分类Dev

如何在范围内添加日期

来自分类Dev

如果提交消息包含特殊字符,则通过完全匹配提交消息来搜索git commit

来自分类Dev

Excel VBA-如果文本框值在范围内不存在,则显示错误消息

来自分类Dev

Excel VBA-如果文本框值在范围内不存在,则显示错误消息

来自分类Dev

在Git中,如果不允许您强制推送到分支,如何更改远程提交消息

来自分类Dev

Git 仅显示分支中特定文件的最新提交的消息

来自分类Dev

git日志范围,但仅包含一个提交路径

来自分类Dev

如果值在范围内以添加为数据框中的新列,如何过滤值

来自分类Dev

如何自动添加[skip ci]以在git中的某个分支上提交消息

来自分类Dev

git:如何在使用预提交钩子提交文件之前获取文件的提交消息?

来自分类Dev

如何同步Git提交消息,标签消息和CHANGELOG

来自分类Dev

从提交消息git获取提交ID

来自分类Dev

从提交消息获取Git提交哈希

Related 相关文章

  1. 1

    在后缀日期范围内查找文件

  2. 2

    如何获取git以显示作者日期在指定日期范围内的提交?

  3. 3

    如果我不在范围内,如何添加 wifi 连接

  4. 4

    Git提交消息自动添加报价

  5. 5

    在Flask中提交表单时如何检索范围内的ORM对象

  6. 6

    如果不存在,则在日期范围内添加默认值(SQL - BIGQUERY)

  7. 7

    Git如何编辑提交消息并保留旧的提交日期

  8. 8

    Git:如何修改 HEAD^^ 提交的内容(不是提交消息)

  9. 9

    一个`git log`标记的提交仅如何提交?

  10. 10

    提交时如何获取git commit消息?

  11. 11

    如何自动接受git的默认提交消息?

  12. 12

    如何退出git merge询问提交消息?

  13. 13

    仅获取基础分支中不存在的提交范围

  14. 14

    Git提交消息问题

  15. 15

    Git提交消息

  16. 16

    如何撤消尚未推送的提交?

  17. 17

    如何在范围内添加日期

  18. 18

    如果提交消息包含特殊字符,则通过完全匹配提交消息来搜索git commit

  19. 19

    Excel VBA-如果文本框值在范围内不存在,则显示错误消息

  20. 20

    Excel VBA-如果文本框值在范围内不存在,则显示错误消息

  21. 21

    在Git中,如果不允许您强制推送到分支,如何更改远程提交消息

  22. 22

    Git 仅显示分支中特定文件的最新提交的消息

  23. 23

    git日志范围,但仅包含一个提交路径

  24. 24

    如果值在范围内以添加为数据框中的新列,如何过滤值

  25. 25

    如何自动添加[skip ci]以在git中的某个分支上提交消息

  26. 26

    git:如何在使用预提交钩子提交文件之前获取文件的提交消息?

  27. 27

    如何同步Git提交消息,标签消息和CHANGELOG

  28. 28

    从提交消息git获取提交ID

  29. 29

    从提交消息获取Git提交哈希

热门标签

归档