Vladimir Panteleev wrote:
On Wed, 26 Jan 2011 23:22:34 +0200, Don <nos...@nospam.com> wrote:
Vladimir Panteleev wrote:
On Wed, 26 Jan 2011 06:33:35 +0200, Don <nos...@nospam.com> wrote:
I think this is a fallacy. It only applies if you
(1) *completely disallow* any centralisation -- which I don't think
ever happens in practice!
What about the Linux kernel? There's Linus's git repo, and lots of
repos maintained by others (e.g. Linux distros). The other distros
are not a superset of Linus's repo, they have their own branches with
various project-specific patches and backports. Git was written for
this specifically.
Yes, but each distro has a trunk, in which all commits are ordered by
time. There's always an official version of every branch.
Ordered by time of what? Time of merging into the branch? That's not
very useful, is it? They can't be ordered by time of authorship, for
certain.
"Official" is technically meaningless in a DVCS, because no repository
is holy by design (otherwise it wouldn't be really distributed).
Yes, in theory that's true. In practice, I don't believe it.
Just because you're using a DVCS doesn't mean you have no project
organisation whatsoever. There's always going to be a repository that
the release is made from.
If the
maintainer of a repository becomes MIA, anyone can take over without any
problems.
and (2) demand that cloning a repository be an entirely read-only
operation (so that the repository doesn't know how many times it has
been cloned)
and (3) demand that the revision numbers behave exactly as they do
in svn.
Then you're suggesting that the commit identifiers basically contain
the clone history?
Yes, I think it could be done that way. Identifier would be composed
of clonenumber+commitnumber. Where it is the location of the original
change. Yes, there are difficulties with this scheme, but I think they
are the same challenges as for implementing merges on a centralised
VCS such as Subversion. I don't think there's anything insurmountable.
Then a clone of a clone of a clone of a clone needs four clone numbers,
plus a revision number. It'd look something like 5:1:2:1:1056.
No. Just one repository number, and one revision number. You just need
to be sensible in how the clone numbers are assigned. That's easy.
Basically every repository has a number of clone numbers it can assign.
Every clone gets a subset of that range. Dealing with the situation when
the range has run out is a bit complicated, but quite doable, and there
are steps you can take to make it a very rare occurence.
I'm not have almost zero interest in this stuff, so I won't say any
more. I'm really just commenting that it's not difficult to envisage an
algorithm which makes exposing a random hash unnecessary.