One Big Repo

Ben Finney bignose+hates-spam at
Fri Feb 27 12:11:59 CET 2009

tchomby <tchomby at> writes:

> Using one big git repo for your homedir has many advantages over
> using many small repos:
> *   It's simpler.

Yes, though that simplicity can be limiting: treating your entire
directory as a single big working tree may not be the best fit.

> * You only have to create the repo once. Creating new repos is a
> PITA. After a simple git init; git add .; git commit; you have to
> make a bare clone of the repo, scp that to your central server, then
> update the original repo to track the central clone, _and_ clone the
> repo onto your other machines, add it to your mrconfig file... It's
> complicated enough that things are likely to go wrong.

Wow, that does sound like a PITA. I'm glad I'm using Bazaar;
replication is simply a matter of ‘bzr push’ or ‘bzr pull’, depending
on the direction.

> * You are less likely to lose files. With many small repos, it
> becomes almost as easy to lose an entire repo as it was to lose a
> file before you started versioning your homedir. It sort of defeats
> the point. With one big repo I just commit a new file to my repo and
> forget about it, then I know I'll never lose that file, the point is
> to avoid me having to think about it. With many repos I have to
> consider which repo a new file should belong to, even whether I
> should create a whole new repo for it.

If one aligns repositories with whatever working tree is being used
for the project, that seems to be a non-issue.

> * With many repos you have to somehow keep track of them all so you
> need a tool like mr, one more tool to learn, and that means you need
> to manage a mrconfig file.

I don't know what “keep track of them all” would mean beyond simply
navigating the filesystem.

> * With one big repo git log gives you a global history of all your
> files, a sort of log of what you've been doing on a day-to-day
> basis. This can be really handy. For example I have to meet with my
> supervisors every few weeks. Instead of using my memory I can just
> use git log to help me construct a progress report.

It also sounds like an awful mess. I want the log to show what I've
been doing in the context of the specific working tree, without the
dozens of other things going on in the same home directory.

 \      “When I wake up in the morning, I just can't get started until |
  `\     I've had that first, piping hot pot of coffee. Oh, I've tried |
_o__)                                    other enemas...” —Emo Philips |
Ben Finney

More information about the vcs-home mailing list