使用 git log 追踪 Python 函数的演变

主要观点:在使用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_requestauthenticate_endpoint_credential再到authenticate_token
  • 该选项返回的差异仅与所查找的函数相关,无额外噪音,能快速定位问题。
  • 对于其他语言如golangrustscheme等可能也需要类似设置。
阅读 16
0 条评论