如何使用unidiff解析器解析git diff -U的输出结果

问题描述 投票:0回答:1

我需要带有上下文的hunks(添加和删除的行),所以我使用git diff -u来获得一个差异。我可以做 线路.is_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
git parsing diff unified-diff
1个回答
0
投票
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行以外的所有行都是上下文行。

© www.soinside.com 2019 - 2024. All rights reserved.