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
