Git – Managing contractors on Github

gitgithuboutsourcing

I want to manage outsourced contractors to help develop our code.
The code sits on Github.

I wish to use a simplified version of this branching model: http://nvie.com/posts/a-successful-git-branching-model/

For now, the code is not modular, so I cannot hide parts of it from some developers, a la https://stackoverflow.com/questions/3852601/github-branches

I do want to hook up our production and staging servers to a repository, so I need to manage write access to the code repository.

Q1 – does this mean I need an ORGANIZATION account on Github?
I'm assuming I do.

Q2 – Would this branching methodology work:
A Main repository with the Master and Integration branches.
Contractors (not having write access) will pull from this repository (or fork it?).
When they are done with a task, they will send a pull-request via the site.

Q2A – does this mean I will not have the ability to track task branches in my repository?
Q2B – how will the integration process work? Do I need to assign a new team, called integrators? Will they pull the completed tasks to the integration branch of the main repository, test it and if good merge to the master branch?

Q3 – Is there a better model?

EDIT – I trust these developers with my code (with regards to secracy). I do not trust them to decide when a feature is ready for production, or which fixes go into the next release.

Thanks!

Tal.

Best Answer

Even as Organization (example), it's tricky because you can only assign read/write permissions per repository, not per branch. So you would have to split your modules into separated repositories to be able to hide parts of it from the contractors.

Also, org users only get few private repositories, so you might run out repos sooner than later, which is why I almost completely made the switch to Codebase because you can have as many repos per "project" as you want, so it's a lifesaver to be able to have multiple repo point to the same issues and wiki instead of having to recreate (or store separately) as I had to in Github, and you can still set permissions on each repo [but not per branch].

Related Topic