代码之家  ›  专栏  ›  技术社区  ›  RobM

git diff如何生成健壮的描述?

  •  14
  • RobM  · 技术社区  · 16 年前

    (Git版本1.6.5.7)

    当我奔跑 git diff 输出在python脚本的行号后面有一个很好的范围提示,例如:

    diff --git a/file.py b/file.py
    index 024f5bb..c3b5c56 100644
    --- a/file.py
    +++ b/file.py
    @@ -14,6 +14,8 @@ TITF: Test Infrastructure Tags Format
    ...
    @@ -1507,13 +1533,16 @@ class Tags( object ):
    ...
    

    注意行号后面跟着 TITF: Test Infrastructure Tags Format 和 class Tags( object ): . 第一个补丁适用于模块范围和描述 titf:测试基础设施标记格式 是模块的描述。第二个补丁应用于 Tags 班级。

    1. git如何生成这些描述?
    2. 如何调整它们以显示修补程序所应用的方法名?
    1 回复  |  直到 8 年前
        1
  •  15
  •   Vadim Kotov First Zero    8 年前

    git使用正则表达式为hunk头找到合适的行。python是内置的,但是您应该能够在~/.gitconfig中定义自己的表达式:

    [diff "python"]
            xfuncname = "<regex goes here>"
    

    关于这个的更多信息 here .

    编辑 :内置的python regex似乎在 userdiff.c (第53行),虽然我的regex-fu不够好,无法真正理解它的作用……

    PATTERNS("python", "^[ \t]*((class|def)[ \t].*)$",
             /* -- */
             "[a-zA-Z_][a-zA-Z0-9_]*"
             "|[-+0-9.e]+[jJlL]?|0[xX]?[0-9a-fA-F]+[lL]?"
             "|[-+*/<>%&^|=!]=|//=?|<<=?|>>=?|\\*\\*=?"
             "|[^[:space:]|[\x80-\xff]+"),
             /* -- */