[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