Rev 4642: bzrlib.transform.TreeTransform.tree_kind and in file:///home/vila/src/bzr/experimental/conflict-manager/
Vincent Ladeuil
v.ladeuil+lp at free.fr
Wed Aug 25 14:02:32 BST 2010
At file:///home/vila/src/bzr/experimental/conflict-manager/
------------------------------------------------------------
revno: 4642
revision-id: v.ladeuil+lp at free.fr-20100825130232-p6ti8njzv5dn322t
parent: v.ladeuil+lp at free.fr-20100825102041-g4gn4h23ydsi3ngn
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: cleanup
timestamp: Wed 2010-08-25 15:02:32 +0200
message:
bzrlib.transform.TreeTransform.tree_kind and
bzrlib.transform.TransformPreview.tree_kind also return None instead of
raising NoSuchFile.
-------------- next part --------------
=== modified file 'NEWS'
--- a/NEWS 2010-08-25 10:20:41 +0000
+++ b/NEWS 2010-08-25 13:02:32 +0000
@@ -160,9 +160,10 @@
API Changes
***********
-* ``bzrlib.transform.TreeTransformBase.final_kind`` now returns None
- instead of raising NoSuchFile.
- (Vincent Ladeuil)
+* ``bzrlib.transform.TreeTransformBase.final_kind``,
+ ``bzrlib.transform.TreeTransform.tree_kind`` and
+ ``bzrlib.transform.TransformPreview.tree_kind``now return None instead
+ of raising NoSuchFile. (Vincent Ladeuil)
* InventoryEntry instances now raise AttributeError if you try to assign
to attributes that are irrelevant to that kind of entry. e.g. setting
=== modified file 'bzrlib/merge.py'
--- a/bzrlib/merge.py 2010-08-25 10:20:41 +0000
+++ b/bzrlib/merge.py 2010-08-25 13:02:32 +0000
@@ -1397,10 +1397,7 @@
self.tt.version_file(file_id, trans_id)
# The merge has been performed, so the old contents should not be
# retained.
- try:
- self.tt.delete_contents(trans_id)
- except errors.NoSuchFile:
- pass
+ self.tt.delete_contents(trans_id)
return result
def _default_other_winner_merge(self, merge_hook_params):
=== modified file 'bzrlib/transform.py'
--- a/bzrlib/transform.py 2010-08-25 10:20:41 +0000
+++ b/bzrlib/transform.py 2010-08-25 13:02:32 +0000
@@ -315,10 +315,9 @@
def delete_contents(self, trans_id):
"""Schedule the contents of a path entry for deletion"""
- # Ensure that the object exists in the WorkingTree, this will raise an
- # exception if there is a problem
- self.tree_kind(trans_id)
- self._removed_contents.add(trans_id)
+ kind = self.tree_kind(trans_id)
+ if kind is not None:
+ self._removed_contents.add(trans_id)
def cancel_deletion(self, trans_id):
"""Cancel a scheduled deletion"""
@@ -389,8 +388,8 @@
changed_kind = set(self._removed_contents)
changed_kind.intersection_update(self._new_contents)
changed_kind.difference_update(new_ids)
- changed_kind = (t for t in changed_kind if self.tree_kind(t) !=
- self.final_kind(t))
+ changed_kind = (t for t in changed_kind
+ if self.tree_kind(t) != self.final_kind(t))
new_ids.update(changed_kind)
return sorted(FinalPaths(self).get_paths(new_ids))
@@ -406,13 +405,7 @@
elif trans_id in self._removed_contents:
return None
else:
- # FIXME?: One step forward, one step backwards, tree_kind raise
- # NoSuchFile instead of returning None -- vila 20100415
- try:
- kind = self.tree_kind(trans_id)
- except errors.NoSuchFile:
- kind = None
- return kind
+ return self.tree_kind(trans_id)
def tree_file_id(self, trans_id):
"""Determine the file id associated with the trans_id in the tree"""
@@ -631,9 +624,7 @@
"""Check for overwrites (not permitted on Win32)"""
conflicts = []
for trans_id in self._new_contents:
- try:
- self.tree_kind(trans_id)
- except NoSuchFile:
+ if self.tree_kind(trans_id) is None:
continue
if trans_id not in self._removed_contents:
conflicts.append(('overwrite', trans_id,
@@ -1407,18 +1398,15 @@
def tree_kind(self, trans_id):
"""Determine the file kind in the working tree.
- Raises NoSuchFile if the file does not exist
+ :returns: The file kind or None if the file does not exist
"""
path = self._tree_id_paths.get(trans_id)
if path is None:
- raise NoSuchFile(None)
+ return None
try:
return file_kind(self._tree.abspath(path))
- except OSError, e:
- if e.errno != errno.ENOENT:
- raise
- else:
- raise NoSuchFile(path)
+ except errors.NoSuchFile:
+ return None
def _set_mode(self, trans_id, mode_id, typefunc):
"""Set the mode of new file contents.
@@ -1712,9 +1700,12 @@
def tree_kind(self, trans_id):
path = self._tree_id_paths.get(trans_id)
if path is None:
- raise NoSuchFile(None)
+ return None
file_id = self._tree.path2id(path)
- return self._tree.kind(file_id)
+ try:
+ return self._tree.kind(file_id)
+ except errors.NoSuchFile:
+ return None
def _set_mode(self, trans_id, mode_id, typefunc):
"""Set the mode of new file contents.
More information about the bazaar-commits
mailing list