What is version control?
It is a software that allows you to manage different versions of the application you are working on. When we speak of versions we refer to any changes made in any of the files.
The benefits of using these tools are many. For example, if we are working on an application that has a folder hierarchy moderately large (any PHP framework falls into this category) we avoid being remembering which files are modified in each folder, it is also in charge of running the update of those files in the server. On the other hand, if we will work with others in the same code, it is responsible for the unification of local versions of each developer and resolve conflicts that may arise from having modified the same file by different people.
Probably the first contact with version control is this. SVN is a version control that maintains a central repository with which synchronize all environments we use: all locales for each of the developers of the project, the production environment (which is also a client of the central repository) and development environment and / or testing if used.
To begin working with a repository, what we do is a checkout that allows us to download the content repository. Once we have our local version of the repository, we can begin to work as usual, considering that if we delete a file from the repository, it is important to make it through SVN because otherwise when trying to upload the changes you will not find those files.
If we need to add a file, we can do an add to add it to the repository, a delete to remove it or we can set up our SVN to ignore certain files or directories (this is very useful for configuration files, cache folders, etc).
All these commands are used when we manage our repository from a console, but also can use a client that has a graphical interface such as Tortoise SVN .
Finally, when we finish with all the changes and modifications, we perform a commit to publish the changes on the server.
Each time we return to a project, we must update by performing update to download all the changes that have been made by other users.
This version control has a great difference from SVN and is working in a distributed manner: no server and copies, but each copy is a complete version of the repository.
His creation is owed to the great Linux Torvalds who developed the project to manage the Linux kernel. This is important because it speaks of the size of projects that can dish and besides being very fast, has a management system for different development branches of the same powerful and yet easy project.
A final difference is the addition of an intermediate state between modified and production, which in principle could make it look more complicated start using.
In the next few posts will explain more in depth how to use SVN and GIT. How do you work? Do you use any of these tools? Tell us!