git - 如何使用 unidiff 解析器解析 git diff -U 输出
问题描述
我需要带有上下文的帅哥(添加和删除的行),所以我使用 git diff -u 来获取差异。我可以做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
解决方案
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 行之外的所有行都是上下文行。
推荐阅读
- react-native - TypeError:未定义不是对象(评估“VisibleComponent.props”)
- gtk - 在 Gtk 中使用 cairo 时,我只能在不透明部分开始移动拖动吗?
- javascript - 如何将图像划分为块并使用java脚本获取鼠标单击的块的ID
- time-complexity - 分析这个短代码的时间复杂度
- kubernetes - 为什么 NodePort 不是 LoadBalancer?
- firebase - 是否可以在 Firestore 中制作仅包含所有文档的特定项目的快照?
- c++ - 需要关于 KeyId/CertId/CertPathId/PassPhraseId 的解释
- xaml - Telerik- RaddataGrid 中的列标题
- javascript - Material UI Select Component - 一个组件正在将文本类型的受控输入更改为不受控制
- php - 在 php 中使用日期格式时出现意外的答案