On 2009-05-26, Ciprian Dorin, Craciun <ciprian.crac...@gmail.com> 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
usern...@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.)

-- 
Be an early adopter! Beat the herd! Choose Windows today!

Reply via email to