Discussion:
Patch collection
Tuomo Valkonen
2009-05-26 17:41:03 UTC
Permalink
Some of the latest changes to Ion, including the scripts repository,
can be downloaded from

http://iki.fi/tuomov/ion/patches.html

pending my VCS switch eternity project. (All version control systems
suck. Only darcs developers have devoted more than two brain cells
to the UI. But GHC sucks donkey balls and thus there's no cygwin
version of darcs, and the native Windows version of darcs sucks.
That's the biggest hurdle of my windows switch: lack of decent
vcs/darcs. Otherwise I'm very happy to have taken broken away
from the feces-throwing competition known as linux.)
--
In 1995, Linux was almost a bicycle; an alternative way of live to the
Windows petrol beasts that had to be taken to the dealer for service.
By 2008, Linux has bloated into a gas-guzzler, and the cycle paths
have been replaced with polluted motorways.
Ciprian Dorin, Craciun
2009-05-26 18:33:44 UTC
Permalink
Post by Tuomo Valkonen
Some of the latest changes to Ion, including the scripts repository,
can be downloaded from
   http://iki.fi/tuomov/ion/patches.html
pending my VCS switch eternity project. (All version control systems
suck. Only darcs developers have devoted more than two brain cells
to the UI. But GHC sucks donkey balls and thus there's no cygwin
version of darcs, and the native Windows version of darcs sucks.
That's the biggest hurdle of my windows switch: lack of decent
vcs/darcs. Otherwise I'm very happy to have taken broken away
from the feces-throwing competition known as linux.)
--
In 1995, Linux was almost a bicycle; an alternative way of live to the
Windows petrol beasts that had to be taken to the dealer for service.
By 2008, Linux has bloated into a gas-guzzler, and the cycle paths
have been replaced with polluted motorways.
Hy there Tuomo!

I admire both your window manager (which I use for more that 3 or
4 years), and your rage against the current state of affairs in the IT
industry. (I'm myself disgusted by 99% of the IT industry.)

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...)

Thank you for your insight,
Ciprian Craciun.

P.S.: I've even found a nice usage for Ion: a "safe" window
manager for my parents, which I'm sure they are not able to break
(pressing random keys, clicking random icons, and all the glorified
Gnome/KDE stuff)... (With OpenOffice or Firefox it is not the same...
It took a little bit of training not to break them...)
Tuomo Valkonen
2009-05-26 19:12:07 UTC
Permalink
Post by Ciprian Dorin, Craciun
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
***@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!
Tuomo Valkonen
2009-05-26 19:15:39 UTC
Permalink
Post by Tuomo Valkonen
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.
Um... WEST, of course. (Idiotic DST kludge. Just looked up the
current zone from 'date', not being familiar with these western
europe zone abbreviations, .fi being EET/EEST, and that patch
was from before the DST switch.)
--
Stop Gnomes and other pests! Purchase Windows today!
Ciprian Dorin, Craciun
2009-05-26 20:01:37 UTC
Permalink
Post by Tuomo Valkonen
    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
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.
Sam Mason
2009-05-27 00:02:56 UTC
Permalink
Post by Ciprian Dorin, Craciun
Some comments though: I don't know Hg to well myself, but at least
Try using darcs for a few days it seems to just do the right thing so
much more than any other VCS I've ever used. Git is painful to use, you
have to have exactly the right mental model for how it works before it
makes sense (or at least that's why I think I failed to grep it). Hg
I've used a bit, and it seemed to work somewhat OK but doesn't "feel"
distributed like darcs does.
--
Sam http://samason.me.uk/
Tuomo Valkonen
2009-05-27 14:07:58 UTC
Permalink
Post by Ciprian Dorin, Craciun
* you can track multiple branches (ion3, ion3-plus);
I've never got why anyone would want multiple branches within
a single DVCS repository. Multiple repositories does it much
more simply.
Post by Ciprian Dorin, Craciun
* it allows you to configure push target (even a default one);
(using them like "git push github" or "git push");
Yup, configure, just like all the other designs that were devoted
just two brain cells.
--
In 1995, Linux was almost a bicycle; an alternative way of live to the
Windows petrol beasts that had to be taken to the dealer for service.
By 2008, Linux has bloated into a gas-guzzler, and the cycle paths
have been replaced with polluted motorways.
Loading...