[PATCH V2] update: warn if cwd was deleted

timeless timeless at gmail.com
Fri Sep 2 18:40:15 EDT 2016


I'd suggest printing the absolute path to the repo root. Asking someone to
run a command from an imaginary directory is asking for trouble. "cd .."
Might fail...

On Sep 2, 2016 4:44 PM, "Stanislau Hlebik" <stash at fb.com> wrote:

> # HG changeset patch
> # User Stanislau Hlebik <stash at fb.com>
> # Date 1472848944 25200
> #      Fri Sep 02 13:42:24 2016 -0700
> # Node ID 374caff3f6ba064070d01329eec1bd33a6a45370
> # Parent  318e2b600b80e4ed3c6f37df46ec7544f60d4c0b
> update: warn if cwd was deleted
>
> During update directories are deleted as soon as they have no entries.
> But if current working directory is deleted then it cause problems
> in complex commands like 'hg split'. This commit adds a warning
> that will help users figure the problem faster.
>
> diff --git a/mercurial/merge.py b/mercurial/merge.py
> --- a/mercurial/merge.py
> +++ b/mercurial/merge.py
> @@ -1043,7 +1043,19 @@
>              repo.ui.note(_("removing %s\n") % f)
>          audit(f)
>          try:
> -            unlink(wjoin(f), ignoremissing=True)
> +            try:
> +                cwd = os.getcwd()
> +            except OSError:
> +                cwd = None
> +            path = wjoin(f)
> +            unlink(path, ignoremissing=True)
> +            try:
> +                os.getcwd()
> +            except OSError:
> +                # Print a warning if cwd was deleted
> +                if cwd and path.startswith(cwd):
> +                    repo.ui.warn(_("cwd was deleted - consider "
> +                                   "changing cwd to repo root\n"))
>          except OSError as inst:
>              repo.ui.warn(_("update failed to remove %s: %s!\n") %
>                           (f, inst.strerror))
> diff --git a/tests/test-rebase-scenario-global.t
> b/tests/test-rebase-scenario-global.t
> --- a/tests/test-rebase-scenario-global.t
> +++ b/tests/test-rebase-scenario-global.t
> @@ -758,6 +758,7 @@
>    $ hg commit -m 'second source with subdir'
>    $ hg rebase -b . -d 1 --traceback
>    rebasing 2:779a07b1b7a0 "first source commit"
> +  cwd was deleted - consider changing cwd to repo root
>    rebasing 3:a7d6f3a00bf3 "second source with subdir" (tip)
>    saved backup bundle to $TESTTMP/cwd-vanish/.hg/strip-
> backup/779a07b1b7a0-853e0073-backup.hg (glob)
>
> diff --git a/tests/test-update-names.t b/tests/test-update-names.t
> --- a/tests/test-update-names.t
> +++ b/tests/test-update-names.t
> @@ -72,3 +72,14 @@
>    $ cd ..
>
>  #endif
> +
> +Test that warning is printed if cwd is deleted during update
> +  $ hg init r4 && cd r4
> +  $ mkdir dir
> +  $ cd dir
> +  $ echo a > a
> +  $ echo b > b
> +  $ hg add a b
> +  $ hg ci -m "file and dir"
> +  $ hg up -q null
> +  cwd was deleted - consider changing cwd to repo root
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at mercurial-scm.org
> https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.mercurial-scm.org/pipermail/mercurial-devel/attachments/20160902/4f2aec92/attachment.html>


More information about the Mercurial-devel mailing list