Embed Notice
HTML Code
Corresponding Notice
- Embed this noticealthough i found amusement that sapling uses an sccs weave to implement the absorb command. :blobcatcoy:
weaves are ... neat. i looked in to them a little when reading the bitkeeper source code. they eventually did get big enough to warrant changing formats. bitkeeper came up with a new bytecode version and they were running lz4 or something on top of it. McVoy was apparently consulting at faceboogle and I'm guessing this is what they were talking to him about.
the big dumb with weaves though is you have to rewrite an entire weave file on every content update. mercurial operates with append-only logs/filesystems (hello venti) and git *can* but often doesn't because of repacking. whereas a weave commit *has* to replace an entire file, because the file *is* the entire log of all changes interwoven with control codes for the versions.
the :blobcatthumbsup: with weave merges is ... they're very smart. having the histories of both files being merged together allows it to get out of failing. which is apparently why BK rarely knows what merge conflicts are while git merge/rebases are always shitting themselves.