Re: Patch collection

"Ciprian Dorin, Craciun" <[email protected]> Tue, 26 May 2009 23:01:37 +0300
Newsgroups gmane.comp.window-managers.ion.general
Message-ID <[email protected]>
On Tue, May 26, 2009 at 10:12 PM, Tuomo Valkonen <[email protected]> wrote:
> On 2009-05-26, Ciprian Dorin, Craciun <[email protected]> wrote:
>>     But I wonder: you like darcs (or at least compared with others),
>> and you have searched for other distributed VCS's but all of them
>> "suck", what is wrong about (for example) Hg or Git? I mean what are
>> your thoughts about this topic.
>>     (Disclaimer: I've switched all my repositories from CVS to SVN and
>> then to Git... and until now, I'm happy... Indeed the Windows support
>> is a little bit brittle, but under Cygwin it should work...)
>
> Actually, it doesn't. The packaged version (cygwin 1.7) doesn't
> do anything when you run it. And I couldn't compile it myself.
> (The build failed at some point, although it did build the git
> binary, that failed similarly to the cygwin-packaged version.)
>
> What annoys the shit out of me in hg, is its manual configuration
> approach to everything. Darcs is interactive. It asks you
> for your name/email when you first use it in a repository
> (unless you have globally configured them); hg used to assume
> username@hostname, which is 99% of the time crap, so you ruined
> your repository, and have to fix it. This days it iirc refuses
> to run until you configure. But at least this is an action you
> have to do only once on each computer.
>
> Unfortunately, the same single brain cell approach persists in
> default push locations. Darcs is nice, and it by
> defaults remembers the previous push/pull location, defaulting
> subsequent pushes and pulls there. And it is interactive, so
> unless you pass -a that just pushes everything without questions
> asked, you'll get to see where and what it is trying to push.
> Also you can't completely ruin your repository with darcs,
> because you can just unpull patches. Now, with hg, it only
> remembers where you first cloned from, and always defaults
> there.. if you've cloned from anywhere. push/pull don't make
> it remember the location. Also, push just pushes the patches
> to the default location, no questions asked, and with hg you
> can ruin the repository this way: there's no way to get rid
> of the patches. If the target repository was wrong, you have
> to figure out what was pushed, and try to fork from an earlier
> point. They want you to do extra work and first do 'hg outgoing'
> to check what would be pushed where, and only after that 'hg push'.
> 'darcs push', by contrast, includes the 'outgoing' functionality
> in its default interactive mode, so you can safely type the command.
> Also, to push by default somewhere else than the initial default
> (none unless a cloned repository), you always have manually edit
> a configuration file in .hg. That sucks.
>
> Bazaar has rather similar idiotic push location behaviour, but
> at least there's a --remember switch to push. Git.. I haven't
> tried a recent version, as remarked above. But a few years ago
> [1], its email push support was a complete joke, equivalent to
> just sending a plain old diff and applying it, without any
> inter-repository tracking. Same, I think, with bazaar. hg at
> least seems to try to do its best within its traditional
> 'kludge based on three-way diff' approach to version control,
> that is to be contrasted with the more advanced theories behind
> darcs.
>
>  [1] http://iki.fi/tuomov/b/archives/2006/10/29/T16_57_00/
>
> That is, indeed, another major problem with the VCS switch...
> it does not seem in general possible to convert _multiple_
> interoperable darcs repositories (e.g. ion-3, ion-3plus)
> into a three-way-diff-kludge vcs, and maintain inter-operability.
> In some limited cases (if the patches in ion-3 and ion-3plus
> were cleanly ordered) it might be possible, but would demand
> a lot of manual effort.
>
> ...
>
> What sucks about the Windows darcs? Well, it's no posix program,
> so a lot of things won't work from cygwin shell. ^C either won't
> work, or will just kill it without cleaning up locks. single-key
> queries won't work; you have to press enter. Generally line-editing
> keys are broken.
>
> Time zones are printed in a non-standard format that other programs
> (such as thost that convert to other VCSs) fail to parse: 'W. Europe
> Standard Time' instead of WEDT. Also, if you set the TZ environment
> variable in cygwin, darcs gets totally confused __although it
> shouldn't see the variable, as it's no cygwin program!__
>
> ssh won't work using cygwin-ssh and the keys stored in ssh-agent;
> you'd have to set up separate putty pagent setup for it... and a key
> setup is _required_, which is just shit.
>
> Also, at least this version of darcs I have, is just broken, 'reading
> pristine' *all the fucking time*, whatever you do. It's dog-slow.
> (Also seems to be compiled with a shitty compiler, and is generally
> slow.)

    Thank you for your opinion! It is insightful about the usability
and impact on the user. (I've never thought about defaults and
configuring at first usage by questions. I've always liked to edit
configuration files.)

    Some comments though: I don't know Hg to well myself, but at least
Git does not suffer from these problems:
    * you can track multiple branches (ion3, ion3-plus);
    * it allows you to configure push target (even a default one);
(using them like "git push github" or "git push");
    * it is smarter than the three-way diff solution; (it allows
arbitrary number of merge parents);
    * it is interoperable at least with SVN;
    * indeed it has a problem with the configuration... You have to do
it manually (by issuing a git command, or editing a file), but also it
doesn't allow you to commit without setting up an email address (or at
least this was the case some versions ago)...

    I remember installing Git on a Windows: http://code.google.com/p/msysgit

    Ciprian Craciun.