[PATCH STABLE] shelve: make unshelve work even if it don't run in repository root

Takumi IINO trot.thunder at gmail.com
Tue Oct 22 09:44:54 CDT 2013


This patch didn't pass some tests.

Please ignore.


2013/10/22 Takumi IINO <trot.thunder at gmail.com>

> # HG changeset patch
> # User Takumi IINO <trot.thunder at gmail.com>
> # Date 1382413265 -32400
> #      Tue Oct 22 12:41:05 2013 +0900
> # Branch stable
> # Node ID 5023e19c1bbde7afdc977deebdd830604cc72588
> # Parent  2c886dedd9021598b6290d95ea0f068731ea4e2b
> shelve: make unshelve work even if it don't run in repository root
>
> revertfiles are relative to the repository root. not paths relative to the
> cwd.
>
> diff --git a/hgext/shelve.py b/hgext/shelve.py
> --- a/hgext/shelve.py
> +++ b/hgext/shelve.py
> @@ -358,6 +358,10 @@
>          raise util.Abort(_('working directory parents do not match
> unshelve '
>                             'state'))
>
> +def pathtofiles(repo, files):
> +    cwd = repo.getcwd()
> +    return [repo.pathto(f, cwd) for f in files]
> +
>  def unshelveabort(ui, repo, state, opts):
>      """subcommand that abort an in-progress unshelve"""
>      wlock = repo.wlock()
> @@ -372,7 +376,7 @@
>              revertfiles = readshelvedfiles(repo, state.name)
>              wctx = repo.parents()[0]
>              cmdutil.revert(ui, repo, wctx, [wctx.node(), nullid],
> -                           *revertfiles, **{'no_backup': True})
> +                           *pathtofiles(repo, revertfiles),
> **{'no_backup': True})
>              # fix up the weird dirstate states the merge left behind
>              mf = wctx.manifest()
>              dirstate = repo.dirstate
> @@ -532,7 +536,7 @@
>                  revertfiles = set(parents[1].files()).difference(ms)
>                  cmdutil.revert(ui, repo, parents[1],
>                                 (parents[0].node(), nullid),
> -                               *revertfiles, **{'no_backup': True})
> +                               *pathtofiles(repo, revertfiles),
> **{'no_backup': True})
>                  raise error.InterventionRequired(
>                      _("unresolved conflicts (see 'hg resolve', then "
>                        "'hg unshelve --continue')"))
> @@ -540,8 +544,8 @@
>          else:
>              parent = tip.parents()[0]
>              hg.update(repo, parent.node())
> -            cmdutil.revert(ui, repo, tip, repo.dirstate.parents(),
> *tip.files(),
> -                           **{'no_backup': True})
> +            cmdutil.revert(ui, repo, tip, repo.dirstate.parents(),
> +                           *pathtofiles(repo, tip.files()),
> **{'no_backup': True})
>
>          prevquiet = ui.quiet
>          ui.quiet = True
> diff --git a/tests/test-shelve.t b/tests/test-shelve.t
> --- a/tests/test-shelve.t
> +++ b/tests/test-shelve.t
> @@ -165,7 +165,9 @@
>
>  and now "a/a" should reappear
>
> +  $ cd a
>    $ hg unshelve -q wibble
> +  $ cd ..
>    $ hg status -C
>    M a/a
>    A b.rename/b
>



-- 
Takumi IINO
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://selenic.com/pipermail/mercurial-devel/attachments/20131022/da4fee17/attachment.html>


More information about the Mercurial-devel mailing list