The best way to create a lightweight and advanced version of a Git project
I've created a little php framework. In this project, I have the main features that I use for most of my projects. I have added some sample data as well, so I don't forget how it all works again.
I have installed a version controlled framework using git. Everything is working fine now and I want to continue working on it. This is my first git project , so I don't know which method I should be using.
Ok, the first thing I want to do is create 2 more versions of the project. As I explained before the release, I now have some sample data inside it.
So the first version I want to create is a stripped down version that removes the sample data. I can use this version to create any new project.
The second version I want to create is the extended version. It has a lite version, combined with sample data, and a few more extensions.
So in the end, I have 3 options for the same project, small, medium and large.
Now what is the best way to do this. Should I create 3 repos for this or can I only use one repository for all versions.
a source to share
Using version control to support multiple development threads is generally a bad idea. This will require continuous merging, which is error prone and cumbersome.
You should organize your product strata without reference to source control. Perhaps this could entail a single codebase that has an entire extended version, with a build system that supports three different build targets. Each build target includes different subsets of the complete product.
a source to share
If you keep 3 together as examples of how to build other projects, I would keep them in the same git repository. Create the smallest one in the master branch. Then create 2 new branches from master, 1 for each of the other versions. Add environment changes to environment branches and big changes to large branch. The master is still small.
The advantage of this is that you understand that there is some new basic functionality that you want in all three versions. You just commit changes to master and then rebase the other 2 branches to master.
a source to share