Как проанализировать вывод git diff -U, используя анализатор unidiff - PullRequest
0 голосов
/ 23 апреля 2020

Мне нужны фрагменты (строки добавлены и удалены) с контекстом, поэтому я использовал git diff -u для получения diff. Я могу сделать line.is_added , чтобы получить lines_added , но эти строки не будут включать строки контекста. Как мне проанализировать эту разницу, чтобы получить lines_added и удаленные строки вместе с некоторыми строками контекста. Прямо сейчас у меня есть

  Line 1
  ......
  Line 5 
- Line 6 
+ Line 7
  ......
  Line n

По сути, я хочу

lines_deleted = context lines, Line 6, more context lines and 
lines_added = context lines , Line 7, more context lines

1 Ответ

0 голосов
/ 03 мая 2020
lines_added = []
for hunk in patched_file:
         for line in hunk:
             if line.is_added or line .is_context and line.value.strip() != '':
                 lines_added.append(line.value)

и аналогично для lines_deleted. Это должно вернуть:

  Line 1
  ......
  Line 5  
+ Line 7
  ......
  Line n

при условии, что все строки, кроме строки 7, являются контекстными.

...