domingo, 3 de febrero de 2013

Why migrating from Subversion to GIT?

Many FLOSS projects are being migrated to GIT version control system. But .. why GIT?



Basically, due to a bunch of characteristics GIT provides basically against Subversion, its precursor on version control system, widely used in FLOSS projects [1]:

- Distributed Nature: Meaning multiple redundant repositories are available, but, above all, that full functionality when disconnected from the network is available.
- Access Control: No commit access to other people must be provided. Distribution means merging what you want from what you want.
- Branch Handling: Every developer's working directory is a branch. GIT  provides advanced branching operations such as:
  * Tracking the project revision the branch started from.
  * Record branch merge events (author, time, date, changes, etc.)
  * Start the next merge at the last merge.
  * Easy conflict resource between branches while merging.
  In general, GIT behaves on a more efficient way compared to subversion when branches are involved
- Performance: In terms of speed operation, GIT design ensures extreme speed with operations such as:
  * Viewing file history
  * Committing changes
  * Performing diffs 
  * Merging and switching branches
  * Obtaining other revision of a file
- Smaller Space Requirements: Git's repository are extremely small compared to Subversion, above all if a huge number of files is being handled. Basically, GIT needs less size due to the fact that Subversion always work with two copies of the file, the one being modified by the user, together with the one in ".svn" directory where the original repository file is kept.

But, does Subversion have advantages against GIT? Of course it has:
- User Interfaces Maturity: due to Subversion being a more mature technology.
- Single repository: that makes easier to keep under control where something is stored.
- Access Controls: meaning possibility to specify read / write access controls in single location.
- Partial Checkout: with Subversion, the possibility to download just a sub directory of a repository is possible, but not with Git. This can mean a problem for large projects in case not a good bandwidth Internet connection is available.
- Shorter and Predictable Revision Numbers: As Subversion assigns sequential revision numbers (starting from 1), it is easier to identify revision states, changes and time locating.
- Ability to Represent Richer Histories: as Subversion allows branch/tag to be created from arbitrary combinations of source revision, while GIT does not.

So, to summarize, lot of large projects are migrating from Subversion to GIT, as the benefits by this last one seems to be more important than disadvantages, with performance and space requirements being enough reason to give GIT an opportunity

References:

No hay comentarios:

Publicar un comentario