Our git repositories typically contain code for our entire websites & services. This includes all painstakingly worded text for marketing, legal, UI, etc.
Essentially a rogue developer could clone it, change a few things, and become a competitor of ours (all legal issues aside). Or more likely, they often will include others work as their own in their portfolios without authorization. In some cases this leads to early disclosure of features and functions we don't want out there yet.
In any case, this has been recognized as a risk since we occasionally work with developers around the globe and have need to add more soon -- granting them access to the entire code base that they will work on.
Have you ever encountered this issue? Or have implemented a solution to reduce or mitigate similar risks?
I am thinking one potential strategy could be to create 3 individual git REPOSITORIES with different purposes (not branches) but something like this:
Git Repo: Project1_DEVELOPERS
$git branch
master
dev
issue_feature1
issue_feature2
etc..
Workflow above: Is basically issue/feature branch style. A developer is delegated a task, checks it out as a issue/feature branch. When completed, submits that branch & merge request into dev branch. We test the branch & merge to dev if OK.
Above is basically how we do things today. That's it. The whole repo is there in 'master' as it gets published to the world.
But to meet the stated goal I'm thinking to ADD something like...
Git Repo: Project1_OBFUSCATE
$git branch
strips_and_swaps (for sending to DEVELOPERS repo)
prod_patches (the patches to make it "whole" again)
prod_master (branch that PRODUCTION repo pulls into its master branch?)
and the production repo...
Git Repo: Project1_PRODUCTION
$git branch
master
As far as content for the problem goes, imagine simple webpage as repo...
.git
index.html
logo.png
So my goal would be to strip out or patch in a real/fake "logo.png" with dummy logo from the branches that are in the "DEVELOPERS" repo.
In practice, instead of just a logo.png, maybe it would be a bunch of .blade files (Laravel) .twig files or whatever template files that might have content bits that we wish to restrict access to. In some cases, maybe the files ONLY exist in teh "OBFUSCATE" remote.
Has anyone done anything similar to this who might share some insight?
It hurts my head to think about doing this the way I'm suggesting, and it might not even work :)