如何编写Perforce脚本以合并非冲突代码?

时间:2014-03-12 00:15:08

标签: merge perforce

背景

  • 我们有生成大部分代码的脚本。

  • 我们不想使用脚本生成所有代码。

  • 通常,我们会将此代码保持独立,但我们正在考虑生成代码部分的脚本,这些代码也将由程序员修改,例如:函数/类定义,即首先我们解析指定函数参数和枚举的头文件,然后生成所有空函数。

  • 我们可以确保程序员永远不会修改脚本生成的代码。

  • 我们需要一种方法来在脚本编辑后自动合并这些文件;例如我们的输入定义文件已更新(外部),我们需要修改函数参数。

方法

两个脚本:“上一个”和“当前”(相同)

  1. 修改“当前”并重新生成代码; “P4编辑”进入变更列表

  2. 合并代码:

    2.A。 Base =从“上一个”生成的代码;在临时文件夹

    2.b中。左=从“当前”生成的代码

    2.C。对=现有代码;当前版本已检入P4

  3. 将“当前”保存为“上一个”

  4. 问题

    我无法弄清楚如何自动化第2步。我们有100多个文件要自动生成,因此手动合并不是一种选择。

    使用“p4merge.exe”需要GUI交互;据我所知。

    我查看了“p4 merge”,“p4 integrate”,“p4 resolve”和“p4 sync”,但我无法弄清楚如何调用正确的行为。

    任何帮助都将受到赞赏,包括替代方法。

    干杯。

2 个答案:

答案 0 :(得分:1)

根据詹姆斯德林的评论,我想出了如何实现我想要的目标。

新方法

一个脚本“当前”。

将生成的文件添加到P4(始终为版本#1)

  1. “p4 sync [file]#1”然后“p4编辑[文件]”

  2. 修改“当前”并重新生成代码

  3. 再次运行“p4 sync”(无需修订)以标记要解决的文件。

  4. 运行“p4 resolve -am”以自动解析文件。

  5. 即使在多次迭代脚本之后,这也应该可以工作。只要我能避免冲突,那么这应该是完全自动化的。

答案 1 :(得分:0)

不是将机器生成的代码与人工编写的代码放在相同的源文件中,而是改变代码生成策略,以便工具生成超类代码,人类可以单独创建子类机器生成的类,它们覆盖了提供所需行为的必要方法。

这是我过去通常做过这种发展的方式。