Rev 5914: Simplify and unlock on errors. in file:///home/vila/src/bzr/reviews/mv_after_with_dest_added/

Vincent Ladeuil v.ladeuil+lp at free.fr
Tue Jun 7 16:31:07 UTC 2011


At file:///home/vila/src/bzr/reviews/mv_after_with_dest_added/

------------------------------------------------------------
revno: 5914
revision-id: v.ladeuil+lp at free.fr-20110607163107-115aj60wew4lei10
parent: benoit.pierre at gmail.com-20110524212751-3er1p2f3mlqg2i0g
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: mv_after_with_dest_added
timestamp: Tue 2011-06-07 18:31:07 +0200
message:
  Simplify and unlock on errors.
-------------- next part --------------
=== modified file 'bzrlib/workingtree.py'
--- a/bzrlib/workingtree.py	2011-05-24 21:27:51 +0000
+++ b/bzrlib/workingtree.py	2011-06-07 16:31:07 +0000
@@ -2728,7 +2728,7 @@
     class _RenameEntry(object):
         def __init__(self, from_rel, from_id, from_tail, from_parent_id,
                      to_rel, to_tail, to_parent_id, only_change_inv=False,
-                     change_id=False):
+                     to_id=None):
             self.from_rel = from_rel
             self.from_id = from_id
             self.from_tail = from_tail
@@ -2736,7 +2736,7 @@
             self.to_rel = to_rel
             self.to_tail = to_tail
             self.to_parent_id = to_parent_id
-            self.change_id = change_id
+            self.to_id = to_id
             self.only_change_inv = only_change_inv
 
     def _determine_mv_mode(self, rename_entries, after=False):
@@ -2762,15 +2762,16 @@
                     errors.NotVersionedError(path=from_rel))
             if to_id is not None:
                 allowed = False
-                # allow it with after but only if dest is newly added
+                # allow it with --after but only if dest is newly added
                 if after:
                     basis = self.basis_tree()
                     basis.lock_read()
-                    added = not basis.inventory.has_id(to_id)
-                    basis.unlock()
-                    if added:
-                        change_id = True
-                        allowed = True
+                    try:
+                        if not basis.has_id(to_id):
+                            rename_entry.to_id = to_id
+                            allowed = True
+                    finally:
+                        basis.unlock()
                 if not allowed:
                     raise errors.BzrMoveFailedError(from_rel,to_rel,
                         errors.AlreadyVersionedError(path=to_rel))
@@ -2801,7 +2802,6 @@
                 else:
                     raise errors.RenameFailedFilesExist(from_rel, to_rel)
             rename_entry.only_change_inv = only_change_inv
-            rename_entry.change_id = change_id
         return rename_entries
 
     def _move(self, rename_entries):



More information about the bazaar-commits mailing list