Php project - need to manage code access and version control

We have a php project - which I want multiple coders to work on. The problem is I don't want to hinder them when developing but also I don't want to give them full access to all my code. Is there a software solution that takes a copy of your master code - gives it to a coder based on the access you want to give them - then allows you to review it before publishing it back to the master copy. As its a php project I would love them to be able to run the code to test themselves before finishing developing, but obviously they would need all the code in the background hidden from them to see if what they have done has worked before submitting for review ??

Is there anything that would work out there ??

Surely software companies around the world do this all the time ???
LVL 1
Andrew BarringtonAsked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Julian HansenCommented:
The two tools / services we use are
Subersion (SVN)
https://subversion.apache.org/
http://tortoisesvn.net/

and GitHub.
https://github.com/

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
Andrew BarringtonAuthor Commented:
doesn't github allow them access to all the files to work locally, potential chance of them taking all the code ?
InsoftserviceCommented:
agree with @Julian you could setup tortoise cvs. Which can be installed and store all your data  on local server
Angular Fundamentals

Learn the fundamentals of Angular 2, a JavaScript framework for developing dynamic single page applications.

Andrew BarringtonAuthor Commented:
And this allows me to allow access to certain files ?? Plus lets me know what's been updated ??
Julian HansenCommented:
Most version control systems are repository based. GH does provide hooks that allow you to control access to a certain extent - we don't use them. There is also gitolite which will do what you want.

One option is to break your project into several modules and assign access that way.

At the end of the day you have to ask why you are needing granular access. If it is to protect your code then you are not really going to solve much with a technical solution.

SVN also has options for securing parts of a repository http://svnbook.red-bean.com/en/1.4/svn.serverconfig.pathbasedauthz.html
Ray PaseurCommented:
If you're using GitHub, you can make the repository available selectively (you will have to pay for this - it will only be free if it's open source).  When your coders have finished their work and unit tests they can push* their changes back to the repository and send a pull* request.  You will have complete control over what gets pulled back into the project.

* Terms of art in project management - Google 'em.

Another alternative is to create an API that exposes the data to your coders.  If you do that, you can keep the API programming private.  The coders will program to the interface.  See the "I" and "D" in this article:
http://www.experts-exchange.com/articles/18329/SOLID-Design-in-PHP-Applications.html
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
PHP

From novice to tech pro — start learning today.