Setting up GitHub to be used as a freelance employer?

I have a large closed source project and from time to time I hire freelancers to work on parts of it.

These freelancers are very specialized and usually get nothing good from giving them access to the entire project. Some will just freak out with complexity, others will be a little confused, while most of them waste time looking at things that don't concern them at some point.

Is there a combination of private repos, branches, submodules, subtree merge, etc. that I can use so that individual freelancers are only available to parts of the project, and yet the owner (me) has a convenient centralized way to do merges, builds, etc. .d.?

I have looked at github, gitorious and gitlab. I prefer to pay github for a private repo to set up one of the other two on my own servers. But what is the actual structure and structure of a git project that will make the private GitHub repo work for the above use case?


I am wondering if I can use git filter-branch

for this. That's what I think:

I set up a private repo on GitHub as the main repository containing the complete history of all branches for the entire project. Nobody but me would have access to this 1st repo.

Then, when a new freelancer is assigned to a new job, I would use git filter-branch

to create a smaller branch (complete history of the master branch on a smaller set of files), which I then push to a second GitHub repository, and grant them access.

Now for the tricky part. Is there a way to do operations between the 1st and 2nd repo that basically refer to the 2nd repo as branch of the 1st? Basically I would like to compare, merge and rebuild the two repositories. Is it possible?


source to share

2 answers

Multiple Streaming to StackOverflow. Hope it helps.

From past experience, you should keep things simple and displayable when working with Git.

Git doesn't have special branch permissions.

A way to restrict access to a Git branch?



Given the goal you set, I'm going to assume that your project is actually a collection of small projects that can work independently, and therefore have their own lifecycle. In this case, I would recommend creating N repos, each containing one of these small projects. This way you can easily share at the subproject level and manage merges at that level.

As with you, you have to set up a super project that brings it all together to form the big picture you only need to see. Whether you are using submodules or subtree merges for implementation that is completely up to you.



All Articles