Python git diff如何生成大块描述?
(git版本1.6.5.7) 当我运行Python git diff如何生成大块描述?,python,git,diff,Python,Git,Diff,(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
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:testinfrastructure Tags Format
是模块的描述。第二个补丁适用于标记
类的方法
Git使用正则表达式为hunk头找到合适的行。Python是内置的,但您应该能够在~/.gitconfig中定义自己的表达式:
[diff "python"]
xfuncname = "<regex goes here>"
[diff“python”]
xfuncname=“”
更多关于这个
编辑:内置python正则表达式似乎是在(第53行)中定义的,尽管我的正则表达式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]+"),
/* -- */
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]+”,
/* -- */
在Git 2.25(2020年第1季度)中,userdiff
机制被教导“async def
”是Python中开始“函数”的另一种方式
参见(2019年11月19日)作者
(于2019年12月5日合并)
:支持Python异步函数
签字人:Josh Holland确认人:约翰内斯六世 Python的
async
函数(用“async def
”而不是“def
”)声明)没有显示在大块的标题中。这个commit向Git教授了
async
函数语法,并添加了Pythonuserdiff
regex的测试
有趣的是,.py diff=python“即使不定义自定义的[diff“python”],也会将行为更改为我想要的,但是,.py+diff(显然是我的默认值)的行为如我的问题所示。”.py diff=python“告诉git使用在[diff“python”](或预定义的默认值)下定义的选项“.py+diff”仅启用文本差异。此开关通常用于禁用不总是检测为二进制文件的文件的差异,例如“*.ps-diff”将PostScript文件视为二进制文件,因此不显示差异。尽管对于二进制文件,建议设置“*.ps binary”,这是“-crlf-diff”的别名GNU diff也有类似的
-p
/--show-c-function
选项,这是它的git-diff等价/泛化的灵感来源。对于那些想知道“*.py diff=python”是什么的人,我想指出这是.gittributes文件中的一行(如果我没有弄错的话)。