Re: so long and thanks for all the darcs
Ben Franksen <[email protected]> Sun, 4 Mar 2018 12:16:13 +0100
| Newsgroups | gmane.comp.version-control.darcs.user |
|---|---|
| Message-ID | <[email protected]> |
Am 04.03.2018 um 05:03 schrieb Karl O. Pinc: > On Sat, 3 Mar 2018 18:36:32 -0800 > Evan Laforge <[email protected]> wrote: > >> On Sat, Mar 3, 2018 at 6:26 PM, Karl O. Pinc <[email protected]> wrote: >>> This being so, I'm curious why a darcs user would choose >>> git over mercurial. >> >> Honestly, because I don't know mercurial. I should fix that someday. >> My impression is that it's like git but with a more sensible command >> line interface, and has an elaborate plugin system with tons of >> extensions (which nice in a way but scary in another way). > > It's not that the command line interface is more sensible. It's > that the mental model of a repo with which the mercurial commands > interact is simple. _Almost_ as simple as darcs. And almost > the same as darcs. I think the difference is that file name > changes are essentially deletes and adds in mercurial. There are much more fundamental differences in the model. Darcs is the only tool I know of that can automatically re-order changes without changing patch identities. Patches that don't depend on each other are freely commuted whenever necessary or, in certain situations, at the user's behest. I agree with Evan that mercurial's UI is much more sensible than git's and that their mental models are pretty similar. One thing that makes git unnecessarily complicated to use IMO is the very loose coupling of local and remote branches. I have never understood this design decision and see absolutely no sensible use case for giving local branches a different name than the remote ones or let the user change which local branch is tracking which remote branch. Mercurial's main fault (IMO) is that it does not support editing history natively. To do such operations, one is forced to use low-level extensions like mq that convert changes between revisions into dumb patch files (the stuff you get with diff -u). Cheers Ben