Replicate git server architecture github style
I am trying to set up a git server at work that uses the integration manager workflow here (which is what github uses), I followed the tutorials launching and already set up a server with gitos installed and that's it, and I'm looking for a direction with remarks to implement this particular worker process.
source to share
The main point of this workflow is:
- Each developer has a local private repo for their personal work.
- Each developer has a public repo where they make changes that should be consumed by others, or integrated into the main project.
- The integrator pulls the desired changes from the developers' public repositories into its personal repo integration.
- When ready, the integrator pushes the collected ("integrated") changes from their integrator replica into the main public repo of the project.
- Developers pull changes from the main public repo of the project. And the cycle repeats.
So, you basically need two things:
- The server that will store the main, public, canonical repo of the project. (It shouldn't be "publicly available" in the sense that everyone can see it - just publicly in the sense that the entire development team has access.)
- A place to store public developer repositories, so the integrator can easily pull from them.
These two things are easily possible if you have a server machine running a Git server (either using the Git daemon, SSH, http / https, or any other supported Git protocol).
source to share
So, in order to get to an acceptable integration manager architecture, I ended up installing gitoz and setting up the developers as users in gitoz. Then the repositories were cloned into gitos, for example. devA / projectA.git devB / projectA.git. I had issues with cloning permissions on the server (make sure NOT to run the hooks executable folder) and what I felt was a bit of a hack, but it works.
source to share