|
I've been developing this project in PHP to access my music from anywhere and stream it. So far I think is my second biggest project and I've felt the need to use a SCM (Source Code Management or manager). What is a SCM? From the wikipedia definition: Revision control (also known as version control (system) (VCS), source control or (source) code management (SCM)) is the management of multiple revisions of the same unit of information. It is most commonly used in engineering and software development to manage ongoing development of digital documents like application source code, art resources such as blueprints or electronic models, and other projects that may be worked on by a team of people. Changes to these documents are usually identified by incrementing an associated number or letter code, termed the "revision number", "revision level", or simply "revision" and associated historically with the person making the change. A simple form of revision control, for example, has the initial issue of a drawing assigned the revision number "1". When the first change is made, the revision number is incremented to "2" and so on. It's a software that lets you have a repository of source codem where you and your team can pull that code change it and then merge it with the main or master repository or create branches on the Source tree to test new things or develop new features without affecting the stability of the main branch. From 2002 to 2005 the Linux kernel wich is a big project, lots of files, lots of code and lots of chenges per minute... yes per minute, they used BitKeeper for SCM and it went fine untilthe company that develops BitKeeper dropped their open license. Linus Torvaldsdecided then after testing all other SCM around decided that none of the existing ones could keep up with a project like the kernel, so he starting making his own. Enter GIT: Git is a free distributed revision control, or software source code management project with an emphasis on being fast. Git was initially created by Linus Torvalds for Linux kernel development. Every Git working directory is a full-fledged repository with complete history and full revision tracking capabilities, not dependent on network access or a central server. in a couple of months GIT was being used to track the linux kernel and it still is, getting better and better. Now why GIT? Well... there is some very good ideas behind GIT's philosophy. The other SCM out there use a client/server model where the master repo is kept only on the server and the cliets download files modify them and then upload then again. Git works diferently, when you want to work on a project you clone the "main" repo and now you have an exact copy of the original, so there is really no "main" there are repos and people use them then you can push your repo to any of the others to merge your changes with theirs or create branches and make it a bigger repo. Other of the great ideas in Git is the way it keeps file contents using diffs and links to reduce the amount of space in disk. Each object in the source treein Git is identified with a SHA1 hash, if there is a change in a file from the earlier versions, either by mistake or intentional you will have a different SHA1 hash and you will notice, that makes the whole tree secure from corruption or intentional changes to introduce bad code. for more information about git check out this links: http://en.wikipedia.org/wiki/Git_(software) http://excess.org/article/2008/07/ogre-git-tutorial/ http://www.youtube.com/watch?v=4XpnKHJAok8 http://betterexplained.com/articles/intro-to-distributed-version-control-illustrated/ Next article I am going to show you some Git basics and then how to use une of the online free repos. (gitorious.org) |