[darcs-users] what about removing the unrevert command?

Dan Pascu dan at ag-projects.com
Mon Apr 4 19:25:36 UTC 2011

On 3 Apr 2011, at 15:26, Guillaume Hoffmann wrote:

> I'd like to see the unrevert command going away. I'd like to collect
> opinions on this. Let me start :-)
> Arguments for removing it:
> - people don't expect it (other VCS don't have it),

I do expect it, because of the symmetry of the command set. I don't care what other VCS do, I do not inspect their command set in order to make expectations for darcs, especially when they have less features in that direction. Many VCS do not have cherry picking. Is this an argument to remove it because people do not expect it? I'd say the things darcs does and other VCS don't are part of its strong points not its weaknesses.

> hence few people
> use it, and most would't miss it
> - it would prevent darcs from getting in my way by occasional
> "warning, this will make unrevert impossible" messages

I hardly see this as getting in my way. It's a valid warning that means that if I rely on unrevert later it will be made impossible by my current operation. I need to know that and plan around it. The only way it can go away is if darcs can solve it automatically and allow me to unrevert later even if I perform the current operation.

> - it would reduce the number of concepts exposed to the users in the
> manual and in darcs help

On the contrary. With a symmetric command set, it's less to remember. With every asymmetry you introduce in the command set I have to remember more exceptions.

> - it would reduce the codebase, reduce the potential points of failure
> of darcs (search "unrevert" bugs on the bug tracker), improve
> maintainability
> - it would make revert faster (no longer write the unrevert patch when
> doing revert)

seriously, how much faster? it's not like revert is slow and we need to find every means possible to optimize it. I find symmetry much more important, to give up for a speed increase that most likely I won't even be able to tell apart.

> - it would make one item less on Ganesh's rebase Todo list :-)
> - it could later be replaced by darcs revert -O (even if it's not
> really the same thing)

revert -O doesn't sound like unrevert to me. I can intuitively guess that unrevert is the opposite of revert, but I have no clue what revert -O does without consulting a manual.

> Arguments against removing it:
> - some people use this feature
> - it's theoretically a nice feature (it's a nice use of patch
> commutation) so it's sad to remove it
> - it's an undo command, and having undo commands is generally nice

This is another very strong reason. Having undo capabilities, allows me to do things without the fear of mistakingly throwing all my day's work out the window. I also do not have to deal with annoying "Are you sure" confirmation dialogs, that in the end people tend to automatically skip and automatically press Yes because 99% of the time they answer with Yes anyway. I'm sure that everyone had an "oh sh*t!" moment in their lives when they automatically answered a confirmation dialog out of habit, just to realize that, that time, they had to actually say No, but they pressed the Yes button too quickly out of habit and all their work was lost for good.
Undo capabilities allow you to avoid that and to avoid the stress of always taking care not to mess up. We're human and we make mistakes. Sooner or later each of us will make a mistake and we'll be glad that we can undo it and not worry about it.


More information about the darcs-users mailing list