Is there an installation and branch mapping guide available for RoboMerge?

Hello,

Is there an installation and branch mapping guide available for RoboMerge?

I successfully installed RoboMerge, helix-cli, node.js, and TypeScript, and managed to get RoboMerge running.

Initially, I encountered build errors tsc with node.js 16.20 and TypeScript 5.3, and resolved them by adjusting tsconfig and modifying some TypeScript code.

The same errors occurred again when testing with node.js 22.14 and TypeScript 5.8.3 before my modifications.

After adjustments, it’s currently working fine with node.js 22.14 and TypeScript 5.8.3.

Could you confirm if these build errors are also present in Epic’s environment?

I’m currently testing with a bot named “test” using test.branchmap.json.

I’m reviewing the branches and branchspecs configurations by analyzing the TypeScript code and runtime errors.

I noticed that setting up RoboMergeData requires creating a dedicated Perforce stream, and the names in branchspecs correspond to Perforce branch mappings.

Given the complexity, could you provide additional guidance or documentation for the options in

branchmap.json, as well as guidance on configuring edge, gate settings?

The configuration I want to implement:

  • Perforce streams: main -> dev -> devnext with automated merges.
  • Selective merging based on paths (include/exclude specific files or paths).
  • Automatic downstream merges for .uasset files, with direct conflict notifications to users. I’ve successfully tested email notifications via Amazon SES.

Thank you!

----

test.branchmap.json

{ "defaultStreamDepot": "depot", "rootPath": "//TestProject", "isDefaultBot": true, "noStreamAliases":true, "checkIntervalSecs": 1, "branches": [ { "streamDepot":"TestProject", "streamName":"RoboMergeTestMain", "name":"Main", "flowsTo": ["Dev1"], "forceAll": true }, { "streamDepot":"TestProject", "streamName":"RoboMergeTestDev1", "name":"Dev1", "flowsTo": ["Dev1Next"], "forceAll": true }, { "streamDepot":"TestProject", "streamName":"RoboMergeTestDev1Next", "name":"Dev1Next" } ], "branchspecs": [ { "name": "ROBO:Main->Dev1", "from": "Main", "to": "Dev1" }, { "name": "ROBO:Dev1->Dev1Next", "from": "Dev1", "to": "Dev1Next" } ] }

재현 방법

  • robomerge directory
  • install nodejs, typescript
  • run ‘tsc​’ in console

Hi there,

Admittedly the documentation is a bit light for Robomerge (I, [Content removed] I’ll loop in one of my colleagues ([mention removed]​ ) to see if they have any thoughts.

Kind regards,

Julian

My understanding of Robomerge is only user-facing unfortunately, I’ll get engineering to chime in.

Robomerge is not officially supported and is shared as is with, as you have seen, very limited documentation. Apologies for that, but we are not currently planning on doing any major documentation work for it.

I have Node 22.12 and TS 5.3.3 installed on my machine and based on the logs our production environment appears to be using 20.18.1 and 5.7.2. Neither of those are seeing any compilation issues, but if you want to provide us the specific errors we can take a look at if we can clean up anything.

To accomplish “Selective merging based on paths (include/exclude specific files or paths).” you should look at using perforce branchspecs which can be specified either in the “branchspecs” section for bi-directional relationships or as a property on edges as well. While you can use streamSubpath in some cases, it is limited to a single path worth of filtering whereas if you want to do more elaborate specifications you need to make use of the perforce filtering tools.