Show More
@@ -2890,8 +2890,10 b' def save(ui, repo, **opts):' | |||
|
2890 | 2890 | ('', 'no-backup', None, _('no backups')), |
|
2891 | 2891 | ('', 'nobackup', None, _('no backups (DEPRECATED)')), |
|
2892 | 2892 | ('n', '', None, _('ignored (DEPRECATED)')), |
|
2893 |
('k', 'keep', None, _("do not modify working copy during strip")) |
|
|
2894 | _('hg strip [-k] [-f] [-n] REV...')) | |
|
2893 | ('k', 'keep', None, _("do not modify working copy during strip")), | |
|
2894 | ('B', 'bookmark', '', _("remove revs only reachable from given" | |
|
2895 | " bookmark"))], | |
|
2896 | _('hg strip [-k] [-f] [-n] [-B bookmark] REV...')) | |
|
2895 | 2897 | def strip(ui, repo, *revs, **opts): |
|
2896 | 2898 | """strip changesets and all their descendants from the repository |
|
2897 | 2899 | |
@@ -2926,6 +2928,32 b' def strip(ui, repo, *revs, **opts):' | |||
|
2926 | 2928 | cl = repo.changelog |
|
2927 | 2929 | revs = list(revs) + opts.get('rev') |
|
2928 | 2930 | revs = set(scmutil.revrange(repo, revs)) |
|
2931 | ||
|
2932 | if opts.get('bookmark'): | |
|
2933 | mark = opts.get('bookmark') | |
|
2934 | marks = repo._bookmarks | |
|
2935 | if mark not in marks: | |
|
2936 | raise util.Abort(_("bookmark '%s' not found") % mark) | |
|
2937 | ||
|
2938 | # If the requested bookmark is not the only one pointing to a | |
|
2939 | # a revision we have to only delete the bookmark and not strip | |
|
2940 | # anything. revsets cannot detect that case. | |
|
2941 | uniquebm = True | |
|
2942 | for m, n in marks.iteritems(): | |
|
2943 | if m != mark and n == repo[mark].node(): | |
|
2944 | uniquebm = False | |
|
2945 | break | |
|
2946 | if uniquebm: | |
|
2947 | rsrevs = repo.revs("ancestors(bookmark(%s)) - " | |
|
2948 | "ancestors(head() and not bookmark(%s)) - " | |
|
2949 | "ancestors(bookmark() and not bookmark(%s))", | |
|
2950 | mark, mark, mark) | |
|
2951 | revs.update(set(rsrevs)) | |
|
2952 | if not revs: | |
|
2953 | del marks[mark] | |
|
2954 | repo._writebookmarks(mark) | |
|
2955 | ui.write(_("bookmark '%s' deleted\n") % mark) | |
|
2956 | ||
|
2929 | 2957 | if not revs: |
|
2930 | 2958 | raise util.Abort(_('empty revision set')) |
|
2931 | 2959 | |
@@ -2973,6 +3001,12 b' def strip(ui, repo, *revs, **opts):' | |||
|
2973 | 3001 | |
|
2974 | 3002 | repo.mq.strip(repo, revs, backup=backup, update=update, |
|
2975 | 3003 | force=opts.get('force')) |
|
3004 | ||
|
3005 | if opts.get('bookmark'): | |
|
3006 | del marks[mark] | |
|
3007 | repo._writebookmarks(marks) | |
|
3008 | ui.write(_("bookmark '%s' deleted\n") % mark) | |
|
3009 | ||
|
2976 | 3010 | return 0 |
|
2977 | 3011 | |
|
2978 | 3012 | @command("qselect", |
@@ -430,3 +430,37 b' stripping many nodes on a complex graph ' | |||
|
430 | 430 | $ hg strip 'not ancestors(x)' |
|
431 | 431 | saved backup bundle to $TESTTMP/issue3299/.hg/strip-backup/*-backup.hg (glob) |
|
432 | 432 | |
|
433 | test hg strip -B bookmark | |
|
434 | ||
|
435 | $ cd .. | |
|
436 | $ hg init bookmarks | |
|
437 | $ cd bookmarks | |
|
438 | $ hg debugbuilddag '..<2.*1/2:m<2+3:c<m+3:a<2.:b' | |
|
439 | $ hg bookmark -r 'a' 'todelete' | |
|
440 | $ hg bookmark -r 'b' 'B' | |
|
441 | $ hg bookmark -r 'b' 'nostrip' | |
|
442 | $ hg bookmark -r 'c' 'delete' | |
|
443 | $ hg up -C todelete | |
|
444 | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
|
445 | $ hg strip -B nostrip | |
|
446 | bookmark 'nostrip' deleted | |
|
447 | abort: empty revision set | |
|
448 | [255] | |
|
449 | $ hg strip -B todelete | |
|
450 | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
|
451 | saved backup bundle to $TESTTMP/bookmarks/.hg/strip-backup/*-backup.hg (glob) | |
|
452 | bookmark 'todelete' deleted | |
|
453 | $ hg id -ir dcbb326fdec2 | |
|
454 | abort: unknown revision 'dcbb326fdec2'! | |
|
455 | [255] | |
|
456 | $ hg id -ir d62d843c9a01 | |
|
457 | d62d843c9a01 | |
|
458 | $ hg bookmarks | |
|
459 | B 9:ff43616e5d0f | |
|
460 | delete 6:2702dd0c91e7 | |
|
461 | $ hg strip -B delete | |
|
462 | saved backup bundle to $TESTTMP/bookmarks/.hg/strip-backup/*-backup.hg (glob) | |
|
463 | bookmark 'delete' deleted | |
|
464 | $ hg id -ir 6:2702dd0c91e7 | |
|
465 | abort: unknown revision '2702dd0c91e7'! | |
|
466 | [255] |
General Comments 0
You need to be logged in to leave comments.
Login now