首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >git-diff是如何生成巨大的描述的?

git-diff是如何生成巨大的描述的?
EN

Stack Overflow用户
提问于 2010-05-06 17:24:50
回答 1查看 2.3K关注 0票数 15

(git版本1.6.5.7)

当我运行git diff时,输出在我的Python脚本的行号之后有一个很好的范围提示,例如:

代码语言:javascript
复制
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 Formatclass Tags( object ):。第一个补丁适用于模块范围,描述TITF: Test Infrastructure Tags Format是模块的描述。第二个补丁应用于Tags类的一个方法。

  1. git是如何生成这些描述的?
  2. 如何调整它们以显示应用修补程序的方法名称?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-05-06 17:41:15

Git使用一个正则表达式来为主标头找到一个合适的行。Python是内置的,但是您应该能够在~/..gitconfig中定义自己的表达式:

代码语言:javascript
复制
[diff "python"]
        xfuncname = "<regex goes here>"

关于这个这里的更多信息。

编辑:内置的python似乎是在userdiff.c中定义的(第53行),尽管我的regex还不足以真正理解它所做的事情.

代码语言:javascript
复制
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]+"),
         /* -- */
票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2783086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档