git在提交范围,脚本中编辑作者姓名

加夫里·亚沙(GavriYashar)

我想创建一个git脚本,在指定的提交范围(abcd..dcba)中将作者“ A”替换为作者“ B”。我怎样才能做到这一点?这是我到目前为止的内容:

#!/bin/sh
#
# git-myCommand
#
#
git filter-branch --commit-filter '
    if  [ git rev-list --boundary 02e60c8..dc4c65f ]; then
        if [ "$GIT_AUTHOR_NAME" = "A" ];then
            GIT_AUTHOR_NAME="B";
        fi;
    fi;
git commit-tree "$@"'

问题是git说

Rewrite $SHA1-Number git commit-tree: line 48: [: too many arguments

git rev-list --boundary命令在if语句中是否合法?如果我删除if [git rev-list ...]语句,它将起作用。

理想的情况是我可以添加输入变量。所以命令看起来像

git myCommand $AuthorExpression $AuthorReplace $CommitA..$CommitB

编辑:有人认为这个问题已经被提出。对于那些人,请再次阅读上面的问题,并将其与以前的问题进行比较。AFAIK这个问题(测试提交是否在提交A和提交B之间)尚未提出。如果我错了,很抱歉浪费您的时间。感谢那些试图回答这个问题的人!

星期二

其他人解决了参数引用问题。剩下的最大问题是测试:

if [ git-rev-list ... ]

提交过滤器只是一个shell脚本片段,所以这告诉Shell运行命令:

[ git-rev-list ... ]

并测试该命令的退出状态是否为零(真)或否(假)。[命令也称为test,没有任何git内置函数

您似乎想要知道的是,要过滤的原始提交是否属于范围A..B包含在内的成员让我们首先从分支过滤器文档中注意到这一点:

过滤器的应用顺序如下。始终在shell上下文中使用eval命令评估<command>参数(出于技术原因,commit过滤器明显例外)。在此之前,$GIT_COMMIT环境变量将设置为包含要重写的提交的ID。

因此,您可以编写如下内容:

A=$(git rev-parse $3) || exit 1
B=$(git rev-parse $4) || exit 1
git filter-branch --commit-filter "
    if git merge-base --is-ancestor \$GIT_COMMIT $B &&
       ! git merge-base --is-ancestor \$GIT_COMMIT $A^; then

第一个merge-base测试是否$GIT_COMMIT是较高转速的祖先($B在拓扑上等于高于转速)。第二个$A使用帽子后缀来排除较低的rev(之前的提交,以避免$A自身被排除

这是Brian Campbell脚本使用此技术的一种变体(嗯,我也更改了引号扩展技术)。

#! /bin/sh
case $# in
4) ;;
*) echo "usage: $0 oldauthor newauthor firstrev lastrev" >&2; exit 1;;
esac

AuthorExpression=$1
AuthorReplace=$2
A=$(git rev-parse --verify $3^{commit}) || exit 1
B=$(git rev-parse --verify $4^{commit}) || exit 1

git filter-branch --commit-filter "
    if git merge-base --is-ancestor \$GIT_COMMIT $B &&
       ! git merge-base --is-ancestor \$GIT_COMMIT $A^; then
       if [ \"\$GIT_AUTHOR_NAME\" = '$AuthorExpression' ]; then
       GIT_AUTHOR_NAME='$AuthorReplace'
       fi
    fi
git commit-tree \"\$@\""

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

git在提交范围,脚本中编辑作者姓名

来自分类Dev

在Prestashop 1.7中显示作者类别中的作者姓名

来自分类Dev

Bitbucket需要更改最后的提交作者姓名

来自分类Dev

在WordPress中的作者存档页面上获取作者姓名

来自分类Dev

给定SHA1,如何在git中获取(仅)作者姓名或电子邮件?

来自分类Dev

一次更改从 svn 导入的 git repo 中的所有作者姓名

来自分类Dev

Android Studio git签入作者姓名

来自分类Dev

收到了git push错误:“您无法推送以下提交,因为它们是作者姓名不为Stash所知的用户编写的”

来自分类Dev

在woocomerce产品单页中添加作者姓名的钩子

来自分类Dev

拆分提交后合并更改,但不提及作者姓名

来自分类Dev

Wordpress在摘录的开头添加作者姓名

来自分类Dev

在python中的多个文件和文件夹中查找作者姓名

来自分类Dev

如何使用VBA在Word中的注释中设置作者姓名?

来自分类Dev

在python中的多个文件和文件夹中查找作者姓名

来自分类Dev

如何使用VBA在Word中的注释中设置作者姓名?

来自分类Dev

如何从该数据库中获得标题最短的书的作者姓名?

来自分类Dev

Word 2010如何创建宏以在页脚中自动插入作者姓名?

来自分类Dev

在消息列表中更改作者姓名的字体大小

来自分类Dev

在 WordPress 中为所有用户显示相同的作者姓名?

来自分类Dev

获取当前作者档案的作者姓名

来自分类Dev

获取当前作者档案的作者姓名

来自分类Dev

仅获得Windows版本SVN的作者姓名

来自分类Dev

存储具有作者姓名的数据-laravel 5.2

来自分类Dev

仅使用作者姓名获取所有帖子

来自分类Dev

编码和注释以生成javadocs作者姓名

来自分类Dev

仅获得Windows版本SVN的作者姓名

来自分类Dev

通过加入表格获取每篇文章的作者姓名

来自分类Dev

如何在此处将作者姓名分组?

来自分类Dev

如何提取“By”后面的单词来提取作者姓名

Related 相关文章

  1. 1

    git在提交范围,脚本中编辑作者姓名

  2. 2

    在Prestashop 1.7中显示作者类别中的作者姓名

  3. 3

    Bitbucket需要更改最后的提交作者姓名

  4. 4

    在WordPress中的作者存档页面上获取作者姓名

  5. 5

    给定SHA1,如何在git中获取(仅)作者姓名或电子邮件?

  6. 6

    一次更改从 svn 导入的 git repo 中的所有作者姓名

  7. 7

    Android Studio git签入作者姓名

  8. 8

    收到了git push错误:“您无法推送以下提交,因为它们是作者姓名不为Stash所知的用户编写的”

  9. 9

    在woocomerce产品单页中添加作者姓名的钩子

  10. 10

    拆分提交后合并更改,但不提及作者姓名

  11. 11

    Wordpress在摘录的开头添加作者姓名

  12. 12

    在python中的多个文件和文件夹中查找作者姓名

  13. 13

    如何使用VBA在Word中的注释中设置作者姓名?

  14. 14

    在python中的多个文件和文件夹中查找作者姓名

  15. 15

    如何使用VBA在Word中的注释中设置作者姓名?

  16. 16

    如何从该数据库中获得标题最短的书的作者姓名?

  17. 17

    Word 2010如何创建宏以在页脚中自动插入作者姓名?

  18. 18

    在消息列表中更改作者姓名的字体大小

  19. 19

    在 WordPress 中为所有用户显示相同的作者姓名?

  20. 20

    获取当前作者档案的作者姓名

  21. 21

    获取当前作者档案的作者姓名

  22. 22

    仅获得Windows版本SVN的作者姓名

  23. 23

    存储具有作者姓名的数据-laravel 5.2

  24. 24

    仅使用作者姓名获取所有帖子

  25. 25

    编码和注释以生成javadocs作者姓名

  26. 26

    仅获得Windows版本SVN的作者姓名

  27. 27

    通过加入表格获取每篇文章的作者姓名

  28. 28

    如何在此处将作者姓名分组?

  29. 29

    如何提取“By”后面的单词来提取作者姓名

热门标签

归档