[darcs-users] darcs patch: Hide the inefficient "darcs put" command.

Florent Becker florent.becker at ens-lyon.org
Fri Dec 5 15:17:29 UTC 2008


"Thomas Hartman" <tphyahoo at gmail.com> writes:

> I'm leaning towards the removal camp.
>
> I think where darcs wins over git is in the simplicity of the
> interface, so that strength should be emphasized wherever possible.
> The fewer the commands the better.
>
> However, I also agree with the symmetry argument. So I think it's
> reasonable to leave put as a command and have darcs put --help say
> something like
>
> "Was: the opposite of get. A good way to copy a local repository to a
> remote location.[...]"

This proposal is awful in terms of UI. "See how nice it is? We used to have it. Now we don't. Please recode it. Efficiently. Or just go back to git". Why so much hate for ourselves and our users? Either we drop put now and forever, or we keep it and 
a/ try and make it efficient
b/ warn our users.

By the way, UI leanness is not measured in terms of number of commands/flags, but in terms of coherence. For this, having symmetric pairs is much preferable to removing the least used direction. It is then the job of the user manual to let the user know that get is much more useful in practice than put.

To take it to the extreme, if we want to cut down our command set, here is the most efficient way:

-add a pseudo repository, called 0
-add an url scheme sendto://repo
-add an url scheme mailto://some@one.net
-add an url scheme patchfile://path
-merge pull, push, get, send, apply, init, get, and put into a single "transfer" command (for want of a better name) as follows:
darcs pull a = darcs transfer a .
darcs push b = darcs transfer . b
darcs send b = darcs transfer . sendto://upstream
darcs apply b = darcs transfer patchfile://toto.patch .
darcs init = darcs transfer 0 . --create
darcs get a = darcs transfer a . --create
darcs put b = darcs transfer . b --create 

Maybe this would be an idea for camp rather than darcs.



More information about the darcs-users mailing list