D5852: shelve: fix broken backup of conflicting untracked file

martinvonz (Martin von Zweigbergk) phabricator at mercurial-scm.org
Wed Feb 6 18:59:59 EST 2019


martinvonz updated this revision to Diff 13857.

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D5852?vs=13816&id=13857

REVISION DETAIL
  https://phab.mercurial-scm.org/D5852

AFFECTED FILES
  hgext/shelve.py
  tests/test-shelve2.t

CHANGE DETAILS

diff --git a/tests/test-shelve2.t b/tests/test-shelve2.t
--- a/tests/test-shelve2.t
+++ b/tests/test-shelve2.t
@@ -139,21 +139,13 @@
   0 files updated, 0 files merged, 2 files removed, 0 files unresolved
   $ echo z > e
   $ mkdir dir
-BROKEN: should work the same as when not using --cwd
   $ hg unshelve --cwd dir
   unshelving change 'default'
-  abort: $ENOENT$
-  [255]
   $ rmdir dir
   $ cat e
+  e
+  $ cat e.orig
   z
-  $ test -f e.orig && cat e.orig
-  [1]
-restore broken state
-  $ touch d
-  $ echo e > e
-  $ hg add d e
-  $ hg shelve --delete default
 
 unshelve and conflicts with tracked and untracked files
 
diff --git a/hgext/shelve.py b/hgext/shelve.py
--- a/hgext/shelve.py
+++ b/hgext/shelve.py
@@ -679,7 +679,8 @@
         # revert will overwrite unknown files, so move them out of the way
         for file in repo.status(unknown=True).unknown:
             if file in files:
-                util.rename(file, scmutil.origpath(ui, repo, file))
+                util.rename(repo.wjoin(file),
+                            scmutil.backuppath(ui, repo, file))
         ui.pushbuffer(True)
         cmdutil.revert(ui, repo, shelvectx, repo.dirstate.parents(),
                        *pathtofiles(repo, files),



To: martinvonz, #hg-reviewers
Cc: mercurial-devel


More information about the Mercurial-devel mailing list