我的文件中有以下Swift函数 Main/VProj/AppModel.swift
func createItemAndSegment(image:UIImage, completionHandler:(Item?, NSError?)->Void) {
\\[...]
}
git log -L :
州的文件
-L
, : -L:
: 跟踪
中" , "(或函数名称regex )给出的行范围的演变.
但命令
git log -L :createItemAndSegment:Main/VProj/AppModel.swift
git log -L :'createItemAndSegment':Main/VProj/AppModel.swift
git log -L :'/createItemAndSegment/':Main/VProj/AppModel.swift
都失败了,错误 starting at line 1: no match
当文档说:
"功能名称正则表达式"时,它应该是什么样的?
本funcname
应是一个正则表达式匹配函数名,和一个字符串,没有特殊的正则表达式字符应该是一个有效的正则表达式,那么你的第一个例子,git log -L :createItemAndSegment:Main/VProj/AppModel.swift
应该工作.
但是,为了使它工作,Git需要能够确定哪些行是函数声明.它有一个默认的正则表达式,它假定以字母字符,下划线或美元符号开头的任何行(没有前导空格)是函数声明的开头,并且使用-L :
语法将搜索也是一个函数声明匹配您的模式,直到下一个函数声明或文件结尾.
在某些语言中,这种启发式方法并不合适.例如,如果函数或方法声明嵌套在类中并因此缩进,则它将不会接受这些声明.为此,您需要定义自定义函数头正则表达式.在.gitattributes
"定义自定义大块头"部分介绍了如何做到这一点.首先,您将.gitattributes
在项目的顶层创建一个包含以下内容的文件:
*.swift diff=swift
然后在您.git/config
或您的全局中~/.gitconfig
,您将定义一个如何查找这些声明的正则表达式.我不太了解Swift能够告诉你什么是合适的正则表达式,但它可能类似于以下内容(我基于内置的Python正则表达式):
[diff "swift"] xfuncname = ^[ \t]*((class|func)[ \t].*)$