hgext/shelve.py
changeset 20982 1df99f1ea28d
parent 20960 8e5b21ce8ee9
child 20983 2778616de7ce
--- a/hgext/shelve.py	Sun Mar 09 01:03:28 2014 +0900
+++ b/hgext/shelve.py	Sun Mar 09 01:03:28 2014 +0900
@@ -68,6 +68,15 @@
                 raise
             raise util.Abort(_("shelved change '%s' not found") % self.name)
 
+    def applybundle(self):
+        fp = self.opener()
+        try:
+            gen = changegroup.readbundle(fp, self.fname, self.vfs)
+            changegroup.addchangegroup(self.repo, gen, 'unshelve',
+                                       'bundle:' + self.vfs.join(self.fname))
+        finally:
+            fp.close()
+
 class shelvedstate(object):
     """Handle persistence during unshelving operations.
 
@@ -560,16 +569,10 @@
             node = cmdutil.commit(ui, repo, commitfunc, [], tempopts)
             tmpwctx = repo[node]
 
-        try:
-            ui.quiet = True
-            fp = shelvedfile(repo, basename, 'hg').opener()
-            gen = changegroup.readbundle(fp, fp.name)
-            changegroup.addchangegroup(repo, gen, 'unshelve',
-                                       'bundle:' + fp.name)
-            nodes = [ctx.node() for ctx in repo.set('%d:', oldtiprev)]
-            phases.retractboundary(repo, phases.secret, nodes)
-        finally:
-            fp.close()
+        ui.quiet = True
+        shelvedfile(repo, basename, 'hg').applybundle()
+        nodes = [ctx.node() for ctx in repo.set('%d:', oldtiprev)]
+        phases.retractboundary(repo, phases.secret, nodes)
 
         ui.quiet = oldquiet