On Sat, Aug 09, 2008 at 12:38:49AM +0900, Stephen J. Turnbull wrote:
> Alex Lance writes:
> 
>  > If the unpull command is to continue its life in darcs then yes that
>  > behaviour of making it safe, so that you don't accidentally "unpull" i.e.
>  > delete, your single copy of a local patch, appears to be desirable
>  > functionality.
> 
> No, this is *undesirable* functionality.  The point of obliterate is
> indeed to delete your single copy of a local patch (for unlikely but
> possible example, under a court order) without otherwise harming your
> repository.

I think from an end-user/UI perspective it makes more sense that an
"unpull" command, does not easily allow you to delete patches that don't
exist elsewhere - at least not by default, i.e. there could still be an
unpull --force. But regardless, as I said before I think a more favourable
path would be to completely remove "unpull".

> More likely, people just like to live dangerously, and
> they mostly use it in a fairly safe fashion as a generalized
> amend-record.

I am all for giving power to the people, however I do not think it is
necessarily a bad idea to examine the purpose and place of functionality
that enables people to "live dangerously" :) 

What I am trying to suggest is a simplification of the UI and concepts:

- Nuke the "unpull" alias 
- Keep "obliterate"
- Introduce "unobliterate".

> But then somebody will request the addition of a true (ie, unsafe)
> obliterate command.  Anyway, it is, after all, somewhat safer than
> "rm _darcs/patches/...".

I am not suggesting any major modification to the obliterate command.
For all intents and purposes it would function identically. The difference
is that instead of just completely un-applying and deleting a patch, the
patch would get un-applied and then perhaps moved into a "trash" directory
in the repository, whereby it could possibly one day be retrieved with the
unobliterate command, (or alternatively, purged by darcs optimize?).

>  > I think someone mentioned stash and unstash...
> 
> As I understand your intent, these are functionally equivalent to
> multiple heads in a git or Mercurial repository, but would proliferate
> heads in a combinatoric fashion (ie, if you stash 1 patch, you have
> two "heads" mainline and with1, if you stash 2 patches, you have
> *four* "heads", mainline, with1, with2, withBoth).  Not a good UI.

I don't think I quite understand you. But I'm going to plow ahead
anyway :) My understanding is that the whole point of darcs is that given a
specific context the patches may be applied in any order. Ergo, patches
that are stashed/trashed/obliterated should theoretically be able to be
"unobliterated" and re-applied to the branch at any stage without
introducing any confusing UI. 

In fact, I suspect the introduction of an unobliterate command creates
a simpler and safer UI, and the symmetry of the obliterate/unobliterate
commands combined with the complete removal of the unpull command would IMO
*enhance* understandability, without sacrificing anything.

Alex




_______________________________________________
darcs-users mailing list
[email protected]
http://lists.osuosl.org/mailman/listinfo/darcs-users

Reply via email to