Git

A distributed version control system that tracks changes to a set of files. It was initially developed for Linux Kernel development but is now a very popular tool for software development.

It can manage any set of computer files, not only source code. This makes it useful for many use-cases beyond software development.

Limitations and Criticism

Usablility

Git has been critizised for providing a very complex user interface, in the sense that there are many commands that are complex and sometimes unintuitive combinations of more basic commands.

Support for large binary files

Git is optimized for plain text files and it can compute efficient differences between files and only stores these. For binary files Git can not compute differences and stores the complete binary file for every revision. This can become intractable very quickly.

Even when the large files do not change very often the presence of large files can make some Git operations very slow.

Add-on solutions to deal with large files in Git exist:

Fossil has a slightly related functionality called Unversioned Content.

External Links