Недавно на нашей кодовой базе произошел большой рефакторинг нашего C-кода.Я хотел придумать быстрый список измененных имен структур / функций, используя git.Вот как я это сделал.
Используйте git для поиска различий в целых словах, а не в строках
git diff dev --word-diff-regex="([a-zA-Z0-9_]+)"
Пропустите это через sed, чтобы очистить вывод. Вы получите вывод как
[- Старое_имя -] {+} + новое_имя
Создание регулярного выражения для вывода OldName NewName
sed -n "s/.*\[-\([a-zA-Z_]*\)-\]{+\([a-zA-Z_0-9]*\)+}.*/\1 \2/p"
Объедините это с 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