{"thread":{"id":"1040","subject":"Re: Mercurial vs Updated git HOWTO for kernel hackers","startedAt":"2005-06-28T18:47:55Z","lastAt":"2005-06-29T00:12:54Z","messageCount":3,"participants":["Horst von Brand","Christopher Li","Kyle Moffett"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"5374","messageId":"20050628184755.GA2255@64m.dyndns.org","threadId":"1040","inReplyTo":"200506282154.j5SLsETL010486@laptop11.inf.utfsm.cl","subject":"Re: Mercurial vs Updated git HOWTO for kernel hackers","fromName":"Christopher Li","fromEmail":"hg@chrisli.org","sentAt":"2005-06-28T18:47:55Z","receivedAt":"2005-06-28T18:47:55Z","isPatch":false,"sender":{"key":"hg@chrisli.org","avatar":null},"body":"On Tue, Jun 28, 2005 at 05:54:14PM -0400, Horst von Brand wrote:\n> \n> And is exactly the wrong way around. Even RCS stored the _last_ version and\n> differences to earlier ones (you'll normally want the last one (or\n> something near), and so occasionally having to reconstruct earlier ones by\n> going back isn't a big deal; having to build up the current version by\n> starting from /dev/null and applying each and every patch that ever touched\n> the file each time is expensive given enough history, besides that any\n\nMercurial store a full text node when it detect the delta gets too long\nto reach certain point. So what you describe here will not happen on\nmercurial. Having it append only is a very nice feature.\n\n> error in the file is guaranteed to destroy the current version, not\n> (hopefully) just making old versions unavailable).  It also means that\n> losing old history (what you'll want to do once in a while, e.g. forget\n> everything before 2.8) is simple: Chop off at the right point.\n\nYou can still chop of the history before the full node, but rebuilding the\nrepositories. Mercurial save some much space that you would wonder why do you\nwhat to chop the history if you can keep it.\n\nChris\n"},{"id":"5373","messageId":"200506282154.j5SLsETL010486@laptop11.inf.utfsm.cl","threadId":"1040","inReplyTo":"andrewkt@aktzero.com","subject":"Re: Mercurial vs Updated git HOWTO for kernel hackers","fromName":"Horst von Brand","fromEmail":"vonbrand@inf.utfsm.cl","sentAt":"2005-06-28T21:54:14Z","receivedAt":"2005-06-28T21:54:14Z","isPatch":false,"sender":{"key":"vonbrand@inf.utfsm.cl","avatar":"https://avatars.githubusercontent.com/u/211384?v=4"},"body":"Andrew Thompson <andrewkt@aktzero.com> wrote:\n> Petr Baudis wrote:\n\n> >>Mercurial's undo is taking a snapshot of all the changed file's repo\n> >>file length at every commit or pull.  It just truncate the file to\n> >>original size and undo is done.\n\n> > \"Trunactes\"? That sounds very wrong... you mean replace with old\n> > version? Anyway, what if the file has same length? It just doesn't make\n> > much sense to me.\n\n> I believe this works because the files stored in a binary format that\n> appends new changesets onto the end. Thus, truncating the new stuff\n> from the end effectively removes the commit.\n\nAnd is exactly the wrong way around. Even RCS stored the _last_ version and\ndifferences to earlier ones (you'll normally want the last one (or\nsomething near), and so occasionally having to reconstruct earlier ones by\ngoing back isn't a big deal; having to build up the current version by\nstarting from /dev/null and applying each and every patch that ever touched\nthe file each time is expensive given enough history, besides that any\nerror in the file is guaranteed to destroy the current version, not\n(hopefully) just making old versions unavailable).  It also means that\nlosing old history (what you'll want to do once in a while, e.g. forget\neverything before 2.8) is simple: Chop off at the right point.\n-- \nDr. Horst H. von Brand                   User #22616 counter.li.org\nDepartamento de Informatica                     Fono: +56 32 654431\nUniversidad Tecnica Federico Santa Maria              +56 32 654239\nCasilla 110-V, Valparaiso, Chile                Fax:  +56 32 797513\n"},{"id":"5386","messageId":"A595C063-7F6E-49AD-A797-1133C731E7E3@mac.com","threadId":"1040","inReplyTo":"200506282154.j5SLsETL010486@laptop11.inf.utfsm.cl","subject":"Re: Mercurial vs Updated git HOWTO for kernel hackers","fromName":"Kyle Moffett","fromEmail":"mrmacman_g4@mac.com","sentAt":"2005-06-29T00:12:54Z","receivedAt":"2005-06-29T00:12:54Z","isPatch":false,"sender":{"key":"mrmacman_g4@mac.com","avatar":null},"body":"On Jun 28, 2005, at 17:54:14, Horst von Brand wrote:\n> Andrew Thompson <andrewkt@aktzero.com> wrote:\n>> I believe this works because the files stored in a binary format that\n>> appends new changesets onto the end. Thus, truncating the new stuff\n>> from the end effectively removes the commit.\n>\n> And is exactly the wrong way around. Even RCS stored the _last_  \n> version and\n> differences to earlier ones (you'll normally want the last one (or\n> something near), and so occasionally having to reconstruct earlier  \n> ones by\n> going back isn't a big deal; having to build up the current version by\n> starting from /dev/null and applying each and every patch that ever  \n> touched\n> the file each time is expensive given enough history, besides that any\n> error in the file is guaranteed to destroy the current version, not\n> (hopefully) just making old versions unavailable).  It also means that\n> losing old history (what you'll want to do once in a while, e.g.  \n> forget\n> everything before 2.8) is simple: Chop off at the right point.\n\nIf we have versions A through A+N, Mercurial will create a new revlog  \nfile and\nstore a new full version when the total size of the changes between A  \nand A+N\nis greater than a certain amount, effectively ensuring that  \nretrieving the\nlatest version of a file is O(size-of-file) instead of O(size-of- \nfile*revisions).\nThis is the same speed as RCS for the tip, and significantly faster  \nthan RCS\nfor non-tip, which is crucial for merges.\n\nCheers,\nKyle Moffett\n\n--\nThere are two ways of constructing a software design. One way is to  \nmake it so simple that there are obviously no deficiencies. And the  \nother way is to make it so complicated that there are no obvious  \ndeficiencies.\n   -- C.A.R. Hoare\n"}]}