comunication is key,
define basic input-output-pins between your teams,
using send+receive nodes between different teams avoids changes in the parent patch
while creating visuals and core - every team can use his own renderer subpatch, later decide for one and delete the other…
We create a master branch and one branch for each dev.
The team leader is in charge of the master branch (as well as their own branch) and is the only person to update the master (often with the help of the other devs).
In vvvv to keep things tidy, each dev has their own subpatch on the root patch. The devs also have their own subfolder.
To merge the devs branches with the master branch the team leader needs to manually copy and paste the folders from each branch into the master.*
Each developer then copies the master to their own branch (or makes a new branch) and the process repeats.
For large assets that need to be ignored we use cloud storage (Google Drive in our case). A folder is created for each branch, so there is Master, Dev1, Dev2, etc. This means that all the team have access to all the ignored files.
Sadly no visual version control exists because Apple own the patent from Quartz and are not doing anything with it.