Hello, we’re activelly trying to use Robomerge but find it a bit harsh to understand just out of docs & sample config how to set it up in few scenarios. Could we ask you to help us with defining proper config (or sharing sample that you are using in production - data anonymized) so that we can get the best out of it please?
So far what I have understood is that Epic is using 3 named things:
- Nodes: standalone stream/depot (source or target for data)
- Edges: merge and path definitions how to move data from 1 node to other
- Bots: Small applications (“threads” ?) that will run for different kind of logics. I.e. bot for slack communication, bot for core services, bot for single edge execution, bot for checking for new CLs
Following this understanding, below I’m sharing several cases we’ve run into and we would appreciate any feedack/experience sharing & possible right config to make that:
- We are in the middle of project and we would like to set-up new stream and start merging there. Our usual flow is to create new stream manually, then run p4 copy command and get exact copy of what we had on stream. After that we’d like to enable merging with the Robomerge. Logically it is something you want to define on the Edge definition (is it `branchspecs` ?) so that it affects “merging” just to one stream (and not multiple) -- and it should be done by using `initialCL` ?
- We tried to use it as one in sample but that didn’t work.
- `branchspecs` name (`ROBOMERGE Main -> Sample`) is created automatically and we must repurpose it? Can we define the “force merge” just in branchspecs or we need to have in both Node definition and Edge definition?
- Instead of using `p4 copy` command, can we instead setup just base stream and use robomerge to copy everything? What config would I use for that scenario?
- There are several types/modes of merging for the edges mentioned in the UI, could you please provide sample config for each of those situation:
- merge on request - this one should be defined in Node (`branches[0].flowsTo`) by specifying to which Node it can branch to, that’s it, right?
- gated merged - What gating does it allow? can we filter files/extensions? or is it based on directories / CL numbers? How can we use it?
- automatic merge- this one should be defined in Node (in both properties? `branches[0].flowsTo` AND `branches[0].forceFlowTo`) and it will automatically start merging all CLs?
- default flow - what does it mean that it is “default”? You can specify this in multiple places and it is not so obvious why we would anything to be “default” here?
Adding our current config below as file (if there is anything we can ommit / skip, or is missing, pls let us know).