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

Trent W. Buck trentbuck at gmail.com
Sat Dec 6 01:37:05 UTC 2008


On Fri, Dec 05, 2008 at 06:15:34PM +0200, Dan Pascu wrote:
> On Friday 05 December 2008, Trent W. Buck wrote:
> > I considered that use case, and in my initial post I mentioned that
> >
> >     darcs put x:y
> >
> > amounts to
> >
> >     ssh x darcs init --repodir y
> >     darcs push -a x:y
>
> This is a very poor user interface. A program should not rely on
> external shell scripts to do a fundamental operation (like copying a
> repo in one direction or another). Using the same argument we can
> remove get altogether since one can darcs init & darcs pull.

That's not the case, because get actually *does* do something more
than just init + pull.  It handles --lazy and creates the pristine
tree all at once, rather than "building it up" from the patches.

>> IMO this use case is not common enough to warrant a whole new command
>
> Here we disagree. You cannot know how common this use case is. The
> fact that you never use it doesn't mean none else does.

I do use it.  I just don't do so *commonly*.  Pushing, pulling,
sending patches, and creating local branches are things I do many
times every day; uploading a repository to a remote host is something
I do around thrice per project.

>> just to save one line, particularly since it doesn't NEED to be
>> implemented within darcs -- it can be implemented as a shell
>> function.
>
> See above. A program should provide a complete user interface to its
> functionality, not rely on external scripts.

Is that an argument for removing "darcs diff"?

>> I'd like to minimize the number of visible commands, because new
>> users don't know which commands are "important" and which are for
>> "edge cases".  If "edge case" commands aren't listed, the user can
>> focus more easily on the "important" commands.
>
> darcs has around 35 commands (maybe a bit more in 2.x). Comparing
> that to other version control systems who have between 75 and over
> 100, I'd say the user interface is very clean.

Agreed, but that doesn't mean there is no room for improvement.

> But removing command symmetry will not make it more user friendly or
> simpler. People will wonder why they can do an operation but not the
> opposite operation.
>
> IMO put is as important as get. They are 2 sides of a coin. You
> cannot say put is not important but get is.

If put was efficient -- particularly for local branching -- then I'd
be more inclined to agree.  The current implementation doesn't do
anything like get, it is *just* an init and push.  That's why they
aren't currently symmetrical.


More information about the darcs-users mailing list