首页 > 解决方案 > git diff 在 c 中查找重构名称更改

问题描述

最近,我们的代码库中发生了对 C 代码的大规模重构。我想提出一个使用 git 更改的结构/函数调用名称的快速列表。下面是我是如何做到这一点的。

标签: cgitrefactoring

解决方案


  1. 使用 git 查找整个单词的差异,而不是行差异

    git diff dev --word-diff-regex="([a-zA-Z0-9_]+)"
    
  2. 通过 sed 管道查找清理输出。你会得到像

    [-旧名称-]{+新名称+}

  3. 构建一个正则表达式以输出 OldName NewName

    sed -n "s/.*\[-\([a-zA-Z_]*\)-\]{+\([a-zA-Z_0-9]*\)+}.*/\1 \2/p"
    
  4. 将此与 uniq 结合起来,并排序以获取更改名称的初始列表。

    git diff dev --word-diff-regex="([a-zA-Z0-9_]+)" | \\  
    sed -n "s/.*\[-\([a-zA-Z_]*\)-\]{+\([a-zA-Z_0-9]*\)+}.*/\1 \2/p" | \\  
    sort | \\  
    uniq
    

推荐阅读