主要观点:在使用git log -p -- <filepath>
时可能会被大量噪音困扰,而git
中有一个未被充分利用的-L
选项可以解决此问题,通过该选项可以追踪文件中特定函数或方法的演化,忽略不关心的内容。
关键信息:
- 以
Authlib
的升级导致测试套件失败为例,需要追踪特定方法的演化来诊断问题。 - 要使用
-L
选项,需在.gitattributes
文件中设置*.py diff=python
,告知git
`*.py`文件使用内置 Python 正则表达式处理 diff 块头。 - 可以使用
git log -L :<funcname>:<path/to/file>
来追踪文件中funcname
的演化,如git log -L :authenticate_token:authlib/oauth2/rfc7009/revocation.py
。 -L
选项还接受正则表达式、起始/结束行号等,文档对此解释清晰。
重要细节:- 示例中展示了
authlib/oauth2/rfc7009/revocation.py
文件中authenticate_token
方法的演化过程,从最初的validate_endpoint_request
到authenticate_endpoint_credential
再到authenticate_token
。 - 该选项返回的差异仅与所查找的函数相关,无额外噪音,能快速定位问题。
- 对于其他语言如
golang
、rust
、scheme
等可能也需要类似设置。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。