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

Merge 如何编写脚本Perforce以合并非冲突代码? 背景,merge,perforce,Merge,Perforce,我们有生成大部分代码的脚本 我们不想使用脚本来生成所有代码 通常,我们会将此代码分开,但我们正在考虑生成代码部分的脚本,这些代码部分也将由程序员修改,例如函数/类定义,即首先解析指定函数参数和枚举的头文件,然后生成所有空函数 我们可以确保程序员永远不会修改脚本生成的代码 我们需要一种方法在脚本编辑后自动合并这些文件;e、 g.我们的输入定义文件已更新(外部),我们需要修改功能参数 方法 两个脚本:“上一个”和“当前”(相同) 修改“当前”并重新生成代码;“P4编辑”进入变更列表 合并代码: 2

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

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

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

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

  • 我们需要一种方法在脚本编辑后自动合并这些文件;e、 g.我们的输入定义文件已更新(外部),我们需要修改功能参数

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

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

  • 合并代码:

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

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

    2.c。右=现有代码;当前版本已签入P4

  • 将“当前”保存为“上一个”

  • 问题 我不知道如何使步骤2自动化。我们有100多个文件,我们想自动生成,所以手动合并不是一个选项

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

    我查看了“p4合并”、“p4集成”、“p4解析”和“p4同步”,但我不知道如何调用正确的行为

    任何帮助,包括替代方法,都将不胜感激


    干杯。

    与其将机器生成的代码与人工编写的代码合并到相同的源文件中,不如更改代码生成策略,以便工具生成超类代码,人类可以单独编写机器生成类的子类,这些子类重写必要的方法以提供所需的行为


    这就是我过去进行此类开发的典型方式。

    根据jamesdlin的评论,我找到了实现我想要的东西的方法

    新方法 一个脚本“当前”

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

  • “p4同步[文件]#1”然后“p4编辑[文件]”

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

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

  • 运行“p4 resolve-am”自动解析文件


  • 即使在脚本多次迭代之后,这也应该有效。只要我能避免冲突,那么这应该是完全自动化的。

    p4 sync&&p4 resolve-am
    ?我需要显式设置基本版本,并在没有用户输入的情况下完成合并。您不能执行
    p4 sync@CLN
    要同步到特定的基本更改集,应用外部更改,然后同步+解析自动合并吗<代码>p4解析-am将在无需用户输入的情况下解析所有内容。但是,您还没有解释如果发生冲突会发生什么情况。@CLN可以是一个挂起的变更列表吗?请记住,当我重新运行脚本时,生成的代码将显示为删除所有用户代码,并且自动合并将提交该代码。我需要指定基本版本是其他版本,而不是以前签入Performce的版本。我可以确保不会发生冲突。我通常同意。我们正在考虑如何使用perforce来合并文件,以避免添加更多的基础设施,例如用户代码的include。p、 这是一个低级别的、接近实时的库,它需要生成数百个函数。虽然我们使用模板来最小化用户代码,但由于性能问题,不允许使用多态性。谢谢你的建议。