使用git识别修订中的所有已修改功能

swr*_*enb 4 git diff history revision function

有没有一种好的方法使用git来识别历史记录中每个修订版中的所有已修改函数?我试过使用-p开关,但是它似乎无法以svn的show-c-function参数起作用的方式工作。

我的假设是我要使用“ git diff HEAD〜i HEAD〜i-1 -p”来增加i的值。我是否缺少一些参数,这些参数将有助于确定diff对已修改函数的最佳猜测?

The*_*ist 6

这是在*中列出功能的神奇颂歌git diff

git diff |                  \
grep -E '^(@@)' |           \
grep "(" |                  \
sed 's/@@.*@@//' |          \
sed 's/(.*//' |             \
awk -F " " '{print $NF}' |  \
uniq
Run Code Online (Sandbox Code Playgroud)

...它的作用是...

  1. 选择当前差异,
  2. 接下来仅选择带有“大标题”的行,
  3. 接下来仅选择带有括号的行(可能包含函数名),
  4. 接下来忽略大块头,
  5. 接下来将忽略括号后的文本,
  6. 接下来,仅在开头括号前选择单词,
  7. 最后忽略列表中同一单词的多次出现。

瞧!你有一个被当前修改的函数列表git diff


* git version 2.7.4在运行bash的Ubuntu 16.04上使用进行了验证。