主要观点:在使用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) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。