I want to adapt the Integration Manager Workflow in-house
- Date: Wed, 27 Feb 2019 14:50:42 -0300
- From: "Dr. Rolf Jansen" <rj@xxxxxxxxxxx>
- Subject: I want to adapt the Integration Manager Workflow in-house
By reading the Git documentation and other resources, I am convinced that the Integration Manager Workflow would be best for continuing with the development on a broader basis of a certain project - this is out of question - I want the IMW.
This project got a few years of history by a single developer using Subversion (a few hundreds of commits and about 100 source files). I managed already to 'git svn clone ...' the whole original SVN history into a bare repository on a dedicated server (FreeBSD), and I called this one "Commons.git". I am able to clone a working copy of it to my development machine, and pushing/pulling does work as expected, also the whole SVN commit history is accessible, so up to this point everything looks fine.
Now, I want to set up the requisites for the Integration Manager Workflow for 2 developers (I expect more to join the project later, however let's start with 2). Now, reading some tutorials, I am stuck already right at the beginning. Some start by setting up empty repositories from the scratch (which does not match my case) in another tutorial I read "1. Fork your existing repository ...", however the actual Git commands, how to "fork" are missed out, and Git does not have a fork command, I can clone something or create branches, though.
1) In order to set up the public developer "Derivate-A.git" and "Derivate-B.git" repositories from the "Commons.git" (blessed) repository, what does forking mean in terms of actual Git commands on the server side?
Would I simply do:
git clone --bare Commons.git Derivate-A.git
git clone --bare Commons.git Derivate-B.git
Developer A and developer B then would simply clone respective working copies to their local developer machines and would start working, won't they?
Or would I need to do some sort of branching? In this case please can somebody give a pointers on where (server or client side) and how the branches would be created and perhaps uploaded to the repository server, again in terms of actual Git commands?
2) Developer A made some changes on his Derivate A, which were already pushed to the respective repo on the server. What does the Integration Manager who knows already about the exact details of the changes need to do in terms of actual Git commands to get the changes pushed or pulled or merged or whatever from "Derivate-A.git" into "Commons.git"?
3) So, the changes from Developer A which were integrated into "Commons.git" are interesting for Developer B as well. What would the Integration Manager or Developer B need to do in terms of actual Git commands in order to update "Derivate-B.git" with all the changes which made it into "Commons.git" since?
GitHub, GitLab or alike are not an option, so please may I ask to give your advices in terms of plain git commands. We are using Git version 2.21.0 on the FreeBSD server and the developer machines.
Many thanks for any help.