After many years of using Subversion to maintain and control the source for FreePBX it was decided in 2012 that we would move all of the source code to GIT. The main reason for this was that after almost 10 releases of FreePBX the code base had grown to an almost unsustainable size. Many of the "branches" in subversion sat dormant as they were only touched if there was a bug fix and because of this the directory structure was hard to navigate. If only there was a solution were modules could have their own "repositories" with history that went back to the beginning of their creation. In steps GIT with it's transformative branching model. Furthermore accessing the Subversion repository can sometimes be a pain, especially if you are in a remote location or if you don't have internet access. With Git, you do not have this problem. Your local copy is a repository, and you can commit to it and get all benefits of source control. When you regain connectivity to the main repository, you can commit against it. We call this "decentralized version source control system" or DVCS
Git REALLY shines when you are decentralized. If you have a server at home and a Laptop on the road SVN simply won't work well there.
For more information about the GIT workflow used by FreePBX and Schmoozecom take a look at GIT Branching and Merging
To get started checkout Setting Up a Development Environment
What about Versions 2.9 and lower?
We made the decision early on to no longer maintain FreePBX 2.9 and lower through GIT for sanity sakes. Since the release of 2.9 and lower is in what we call "maintenance mode", where as we only fix security issues, we felt it would not be worth the time to try to back port the version control system to these low versions. However that being said, our SVN-to-GIT migrate scripts have accounted for all of the former SVN (and CVS) commits and applied them to GIT along with all of the former author's email's that we knew about at the time of migration. If a security fix is needed for 2.9 or lower we will apply the changes directly to SVN, which we will keep running for the foreseeable future.
Whats the Point of FreePBX on GitHub?
GitHub give us the flexibility to work with more contributors then if we just restricted our codebase to git.freepbx.org. It also allows us to leverage support of Pull Requests with a few stipulations.
If you have commit rights to a mirrored FreePBX repository you can pull the requests and push it to the official repositories.
You cannot use the Merge button on GitHub for that. The FreePBX Organization on GitHub will not accept contributors. It's only for mirroring! and I will say it again, do NOT use the Merge button on GitHub
Open Pull Requests on GitHub can be managed through this simple interface: http://www.freepbx.org/code/
Please follow the steps listed on the above site per each repository if you want to merge pull requests into FreePBX. Remember, do NOT push the merge button on GitHub!