Hello all,
As you may know, Sabayon uses git for its repositories.
It is a good version control system: it is fast, has
really good support for branching, support for rewriting
history (which has good use cases) and is pretty well
known among VCSs).
However, there is nothing without disadvantages and git
has them too. What really bothers me is that it stores
the full history on disk… well, not this, but the disk
space needed for it. Even though it is able to store years
of history using a relatively small amount of space,
it still requires more than some people need. It also
increases time needed for initial checkout.
Shallow clones are there, but they are not the perfect
solution (when you update the repository, size of .git
increases and as far as I know, you can't tell it easily
keep as small amount of history as possible).
Instead, I'm proposing a solution that is superior to this.
Let's use CVS.
A bit of background information: CVS is a centralized
application that does version control. It is old and proven
No surprise that big projects like Gentoo have chosen
to use it! At the basic level, it does exactly what every
application of this kind does. You can create an initial
checkout, update a repository, commit, make branches, merge
them, view history… Everything you need in this small
package. And, what is important, you don't store the full
history on disk!
Okay, disk space is so cheap! - but you have SSD drives that
are not that cheap, you have small devices with small disks,
and then with CVS there's no need to fetch everything during the
initial checkout.
Some numbers (after running git gc) - du -hs on .git directory:
57M - sabayon overlay,
104M - entropy.git.
Now you may ask: why not Subversion? It's overall better, more
modern, but it still has its pristine copies and still, CVS
is enough for our uses.
But its branching and merging support is a bit worse than
outstanding - I have to agree, but we don't do much branching.
It's old! - and proven! It also has proven bugs or limitations -
- well known bugs or limitations, that is, but well known bugs are
often better than new surprising ones.
Why not ${some other DVCS}? - they store full history too so
they're not a solution. Bazaar with lightweight checkouts is a
nice exception but as far as I know it doesn't have the ability
to checkout a selected directory. Which is another useful feature
CVS (and Subversion too, but see above) provides. Suppose you
want to checkout only app-misc category. Doable!
Last but not least, its web frontend(s) have a really cool feature
to display removed files.
What do you think?