IMO you are solving the wrong problem :) The problem is you have two environments (for now :-)) and you are storing & deploying them together. This can only end in tears when change X for team Y affects team Z and you have no idea why Team Z's production app suddenly exploded when no one touched it.
- Separate the module versions in your repository, paths, branches, however your repo is set-up.
- Use jails, chroots, containers, VMs, etc, to isolate the deployments.
- Only expose the appropriate repository version to each deployment.
Personally I'd just use your OS's package manager for the modules as it makes isolating deploying & upgrading individual systems easier to orchestrate if the environment starts to scale out ... but I also prefer cider to beer so YMMV ;)