git/list[1] front-page[2] threads[3] people[4] search[5] about
 

distributed merge prototype

From
MMMatt Mackall <mpm@selenic.com>
Date
Apr 20, 2005, 17:50 UTC
Message-ID
<20050420175042.GH21897@waste.org>

I've hacked together a prototype SCM that I think you folks might be interested in. The announcement is here:

 http://selenic.com/mercurial/announce.txt

It's at a very early stage right now and is likely to break if you look at it wrong, but I have sucessfully managed to check in kernel trees, do a local clone/branch, make changes in both trees, and then do a pull/sync which called up tkdiff where appropriate.

I mention it here because I've got a fairly simple implementation of distributed merge ala Monotone or BK with the necessary graph smarts. It also should perform decently - I've paid a lot of attention to the scalability of the core algorithms. The core of the merge code is less than 100 lines so even people who aren't familiar with Python may be able to wrap their head around it and leverage it for git.

I'd also like to encourage more attention to back-end storage. Mercurial can check in all 495 versions of linux/Makefile from bkcvs to compressed delta store in about 5 seconds on my laptop and the result is about 80K (bkcvs takes 254K). Adding and retrieving revisions is O(1).

The same directory individually compressed by gzip (ie what git does) takes a comparable amount of time and 5.1M of disk space. This is admittedly a worst case for git as most of the deltas are small, but I needed a test file with lots of revisions.

Now back to our regularly scheduled programming..
-- 
Mathematics is the supreme nostalgia of our time.
Message 1 of 1 in “distributed merge prototype”
  1. Matt MackallApr 20, 2005

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.