On Tue, Nov 27, 2012 at 3:10 PM, Barbu Paul - Gheorghe <barbu.paul.gheor...@gmail.com> wrote: > On 11/27/2012 02:50 PM, Strake wrote: > Hello, > > >> Darcs has no history edition, as it essentially keeps no history, >> which is a win in my book. The main difficulty seems to be the >> corner-case exponential-time merge algorithm. >> > > I'm not familiar with that VCS, but how can it store no history since that, > I think, is the core of any (D)VCS, to have a history of changes, a > versioning, that's its purpose, isn't it?
It stores a graph of the dependencies between patches. When you commit, you just record a patch and the system figures out the syntactic dependencies of your patch wrt the patches that already are in the repo. When you pull, you just download a set of patches and their dependency relation. The two sets (downloaded and local) and the two relations (same) are merged. You can accept or refuse individual patches. When you refuse a patch, all the patches that (transitively) depend on it are automatically refused. > > I'm not an expert, I'm really curious about this. There is a nice explanation of how it works on https://en.wikibooks.org/wiki/Understanding_Darcs/Patch_theory Cheers, -- ______________ Raphaël Proust