As an undergraduate we need to do a project to complete our degree. According to my institute that should be a group project. After few reviews and discussions we select to build a secure and redundant backup system for a enterprise network. In the initial planning stage we realize that this project will have a heavy codding part.
Although we had a heavy codding part, no one had time to do the source code management because all four members of the team did a job while doing the degree. From the design we divide the project into several modules and assign each module to a particular member. But we knew at some point we need to merge those modules into a single unit. With work experience we knew that though a member develop a module, in some occasions others also need to edit the same module to make it interactive with the main system. Then we need to manage those changes and revisions.
Now we need to use some sort of a system to do this source code management task. Most of companies we work use Subversion or SVN, CVS and few use Git to do this task. But there was problem. All these tools required a centralized location to store the source code (repository). (Git works in a slightly different way as it is a distributed version controlling system.) We didn't have a public IP to host a small server or a Amazon-EC2 free tier cloud instance to use as a centralized location.
I remember that I heard something called Github while working. I almost had an account on github.com but I haven't done anything with that. We did some basic testing and agreed to use github.com as our central repository. In GitHub you can select a free or a paid service. As our project is a free and a open source project we decide to go with the free option.
GitHub or github.com is a web base hosting service for Git repositories. Simply it host or store your source code managed by the Git system. Git is a distributed version controlling system designed to handle everything from small to very large projects with speed and efficiency. The Linux kernel development project which is the biggest community driven project in the world is also managed by Git. GitHub converts this power tool in to a very user friendly and interesting tool to use by beginners. Even without prior experience any IT person can use this web base service to so the majority of tasks that performed by Git.
So we create a temporary repository and did some basic testing. Then I initialize new repository for the project and add other members in to that. I was responsible of developing the system core module. I did the initial coding and push it to github. Most of the IDEs support to do this task via the IDE itself. Others take a clone of the repository and they build their modules on top of that. We commit each change we made. It helps us to revert the changes if there was an error after the change. As commits are locally to the user, after a successful change each person push their changes to the central repository (github). Time to time we take updates from the central repository to make sure that the local copy is up to date. In few scenarios we had conflicts but we manage those easily with the help of IDEs.
Via the GitHubs web GUI we easily identify the changes made by each member. It have some graphs to provide information about the project and each members involvements. Anyone other than the specified team members can get a clone of the project but they want be able to push to the main repository. Only thing they can do is to submit a pull request. As the repository owner he/she can view the changes and have the authority to allow or deny the request. With that flexibility we can get more help from others without getting any trouble.
For more info :
Linus Torvalds visits Google to share his thoughts on Git :
GitHub help : https://help.github.com
Our project on GitHub : https://github.com/thilinapiy/SRDBS