[PATCH V3] update: warn if cwd was deleted

timeless timeless at gmail.com
Wed Sep 7 15:35:11 EDT 2016


There should probably be a colon after "root"

On Sep 5, 2016 6:33 AM, "Stanislau Hlebik" <stash at fb.com> wrote:

> # HG changeset patch
> # User Stanislau Hlebik <stash at fb.com>
> # Date 1473071480 25200
> #      Mon Sep 05 03:31:20 2016 -0700
> # Node ID b43aa94306b8f50852a8176afec3839aa3826467
> # Parent  f148bfa40489269be2e48046734f81065129847a
> 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,20 @@
>              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 %s\n") %
> +                                 repo.root)
>          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 * (glob)
>    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 * (glob)
> _______________________________________________
> 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/20160907/4e129f03/attachment.html>


More information about the Mercurial-devel mailing list