[Nix-dev] Re: DVCS - what we care about?

Michael Raskin 7c6f434c at mail.ru
Fri Aug 13 22:09:44 CEST 2010


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 08/13/2010 08:02 PM, me22 wrote:
> Where does this come up?  Suppose something happens to your "official"
> repo.  This can be Linus going on vacation, the server going down,
> etc.  With the git approach, you just designate (as a social process)
> some other repository to be the "official" one until he comes back or
> while you fix it.  When Linus gets back or you bring the server
> online, it can pull from the temporary one without creating a "Merge
> in everything done while Linus was on vacation/the server was broken"
> node that provides no consequential information.  (Example from
> <http://marc.info/?l=git&m=116114254612584&w=2>)

You misunderstand what Monotone does.

In some sense, Monotone branches are less critical for revision storage
than Git branches: in Git a commit without a branch-head descendant is
supposed to be garbage-collected sooner or later. In Monotone every
commit has one (or many) certificates (they are not part of hashed
commit manifest: they are attached after manifest is created and are
signed by the adding committer); some (at least one unless you do
something special) can be branch certificates, but that only matters
when you explicitly have to care about branches.

Next, parents themselves are not ordered for any purpose in Monotone.
Actually, in your scenario there is _more_ "social process" and change
with Git than with Monotone.

With Git you have repository-local branch names and only heads are
tracked. With Monotone (and Mercurial) you have global branch names (in
Monotone you see the branch _signed_ in the branch cert - it cannot
change on pulling). Let us skip Fossil and Bazaar for now.

So in Git you need to change what foreign branch gets into local master
when official mirror changes. With Mercurial and Monotone you just try
to pull from more (or other) servers - the branch names are the same. Of
course, as manifests are at lower level than branches, if you have
commit-wise linear history, nobody cares who committed it where - even
less than with Git.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.15 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQEcBAEBAgAGBQJMZaaHAAoJEE6tnN0aWvw3LR8IAJuHR6b0w4y2dUCDPK6BBLXm
rv4cH9ehkUVg81P9eB87Oo5KGRNXkH4zw87vzBEG751EPQKQaIqirVCaFPeRgW5D
qhmXlpJI6XnWqmViHnV3Sg62L6NozLggcjWXiIVZzVfWbZ+ERZevHF9tQ9zJF7Ml
JEhqTdyS2l0c/8UDDSYibWifoT8OGTjfnULHkGxSHkVq15twPOVDZEZL8iHJyvWr
7z72N/0dX6we0v4hsStHVlFFvBeWLlm3JyVsSn7+l3ItFVCnXNsQ0HVCg6EJMStx
lYQvrxxMIut3eWQJGqkt/HR7kS/EUvCM4rL1geoi6PscJF1Ef/vj5gF0d4c11bY=
=ZBrU
-----END PGP SIGNATURE-----



More information about the nix-dev mailing list