识别.patch文件

时间:2011-05-10 04:44:27

标签: diff patch

这是问题所在。我正在编写一个从Bug跟踪系统查询错误附件的软件。我只能通过获取文本附件(普通/文本等)来过滤查询,并且我只想保留有效的补丁文件(具有类似diff -u输出的文件,可以作为补丁应用于源文件)。所以我需要一种方法来指定哪个附件是有效的补丁。例如:

让我说这个附件包含以下内容:

索引:compiler / cpp / src / generate / t_csharp_generator.cc

--- compiler / cpp / src / generate / t_csharp_generator.cc(修订版1033689) +++ compiler / cpp / src / generate / t_csharp_generator.cc(工作副本) @@ -456,7 +456,7 @@        t =((t_typedef *)t) - > get_type();      }      if((* m_iter) - > get_value()!= NULL){ - print_const_value(out,“this。”+(* m_iter) - > get_name(),t,(* m_iter) - > get_value(),true,true); + print_const_value(out,“this._”+(* m_iter) - > get_name(),t,(* m_iter) - > get_value(),true,true);      }    }

我怎么知道这是一个有效的补丁?是否有正则表达式匹配一些可能的diff -u输出,所以我可以在java中编写类似的东西:

String attachmentContent = ..... 如果(attachmentContent.matches(正则表达式))...

提前谢谢你, 埃尔维斯

1 个答案:

答案 0 :(得分:0)

您将无法使用简单的正则表达式进行测试,也不能使用复杂的方法进行测试,它需要一个能够将@@之间的部分解释为数字的正则表达式引擎,并从中定义重复计数,我不知道这样做的RE引擎。

另一方面,您在查找库解析和加载Unix补丁时不应该遇到太多问题(这绝对不是计算密集型任务),因此只需尝试加载补丁就可以验证它。例如Java diff utils应该直接做到这一点。