我刚刚开始了一个涉及定制 OTRS 3.1 的项目。
在这个项目中,我们有两个文件夹,原始内核文件夹和自定义内核文件夹。如果自定义内核文件夹中存在文件,则它会覆盖原始内核文件夹文件。因此,将 OTRS 3.1 的版本更新到最稳定的版本,只需替换原始内核文件夹即可。但是我们有一个问题:如果自定义文件被更新,更新被忽略,因为我们的自定义覆盖了原始文件。因此,我们需要检测这些冲突,以便手动将增强功能应用于我们的自定义文件。
所以为了实现它,我计划了下一个策略。假设我在原始内核文件中有下一个文件:
print "Hello ";
print "World\n";
我想自定义它,通过“ACME”更改世界,所以我将此文件复制到自定义文件夹并将其更改为:
print "Hello ";
##- CUSTOM CODE
##- Date: 10/02/2014
##- By: Dave
##- Original code:
=pod
print "World\n";
=cut
##< Start custom code
print "ACME\n";
## end custom code >##
=pod 和 =cut 是块注释
现在让我们假设打印单词 Hello 被检测为存在风险,他们将新稳定版本上的文件代码更改为:
print "Hi ";
print "World\n";
将更改应用到我的原始文件夹时,我不会从安全修复中获利,因为我有一个仍然包含 Hello 词的自定义文件。也就是说,我想使用 WinMerge(或其他可以达到相同结果的工具)来检测我的自定义代码标签,所以:
- 以##- 开头的行将被忽略。
- =pod 和 =cut 行被忽略。
- ##< 和 >## 之间的块被忽略
因此,第一个原始文件和我的自定义文件在过滤后将是相同的,但在更新后,它会检测到差异并允许我将更改合并到我的自定义版本。
我知道如何为以##- 开头或等于=pod 或=cut 的行创建过滤器。但我不知道如何从比较中忽略多行块。
你知道我怎样才能达到我想要的吗?如果不使用 WinMerge,是否有其他工具可以帮助我自动执行此任务?
非常感谢您!