[PATCH] strip: remove bookmarks after strip succeed (issue4295)

Augie Fackler raf at durin42.com
Tue Jul 8 20:34:14 CDT 2014


On Tue, Jul 08, 2014 at 04:26:14PM -0700, David Soria Parra wrote:
> # HG changeset patch
> # User David Soria Parra <davidsp at fb.com>
> # Date 1404861863 25200
> #      Tue Jul 08 16:24:23 2014 -0700
> # Node ID 4006d4f3cfa71a300b71b501d587ea13a7065eb9
> # Parent  61b333b982ea7baab198a188306fc05fb2850179
> strip: remove bookmarks after strip succeed (issue4295)
>

queued, thanks

>
> In case we have revs to strip, delete the bookmark after the strip succeeds, not
> beforehand as we might still abort due to dirty working directory, etc.
>
> diff --git a/hgext/strip.py b/hgext/strip.py
> --- a/hgext/strip.py
> +++ b/hgext/strip.py
> @@ -42,7 +42,7 @@
>              raise util.Abort(_("local changed subrepos found" + excsuffix))
>      return m, a, r, d
>
> -def strip(ui, repo, revs, update=True, backup="all", force=None):
> +def strip(ui, repo, revs, update=True, backup="all", force=None, bookmark=None):
>      wlock = lock = None
>      try:
>          wlock = repo.wlock()
> @@ -59,6 +59,14 @@
>              repo.dirstate.write()
>
>          repair.strip(ui, repo, revs, backup)
> +
> +        marks = repo._bookmarks
> +        if bookmark:
> +            if bookmark == repo._bookmarkcurrent:
> +                bookmarks.unsetcurrent(repo)
> +            del marks[bookmark]
> +            marks.write()
> +            ui.write(_("bookmark '%s' deleted\n") % bookmark)
>      finally:
>          release(lock, wlock)
>
> @@ -205,15 +213,9 @@
>              repo.dirstate.write()
>              update = False
>
> -        if opts.get('bookmark'):
> -            if mark == repo._bookmarkcurrent:
> -                bookmarks.unsetcurrent(repo)
> -            del marks[mark]
> -            marks.write()
> -            ui.write(_("bookmark '%s' deleted\n") % mark)
>
>          strip(ui, repo, revs, backup=backup, update=update,
> -              force=opts.get('force'))
> +              force=opts.get('force'), bookmark=opts.get('bookmark'))
>      finally:
>          wlock.release()
>
> diff --git a/tests/test-strip.t b/tests/test-strip.t
> --- a/tests/test-strip.t
> +++ b/tests/test-strip.t
> @@ -496,9 +496,9 @@
>    abort: empty revision set
>    [255]
>    $ hg strip -B todelete
> -  bookmark 'todelete' deleted
>    0 files updated, 0 files merged, 0 files removed, 0 files unresolved
>    saved backup bundle to $TESTTMP/bookmarks/.hg/strip-backup/*-backup.hg (glob)
> +  bookmark 'todelete' deleted
>    $ hg id -ir dcbb326fdec2
>    abort: unknown revision 'dcbb326fdec2'!
>    [255]
> @@ -508,10 +508,20 @@
>       B                         9:ff43616e5d0f
>       delete                    6:2702dd0c91e7
>    $ hg strip -B delete
> +  saved backup bundle to $TESTTMP/bookmarks/.hg/strip-backup/*-backup.hg (glob)
>    bookmark 'delete' deleted
> -  saved backup bundle to $TESTTMP/bookmarks/.hg/strip-backup/*-backup.hg (glob)
>    $ hg id -ir 6:2702dd0c91e7
>    abort: unknown revision '2702dd0c91e7'!
>    [255]
> +  $ hg update B
> +  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> +  (activating bookmark B)
> +  $ echo a > a
> +  $ hg add a
> +  $ hg strip -B B
> +  abort: local changes found
> +  [255]
> +  $ hg bookmarks
> +   * B                         6:ff43616e5d0f
>
>    $ cd ..
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> http://selenic.com/mailman/listinfo/mercurial-devel


More information about the Mercurial-devel mailing list