~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/transform.py

  • Committer: Samuel Bronson
  • Date: 2012-08-30 20:36:18 UTC
  • mto: (6015.57.3 2.4)
  • mto: This revision was merged to the branch mainline in revision 6558.
  • Revision ID: naesten@gmail.com-20120830203618-y2dzw91nqpvpgxvx
Update INSTALL for switch to Python 2.6 and up.

Show diffs side-by-side

added added

removed removed

Lines of Context:
231
231
        new_roots = [k for k, v in self._new_parent.iteritems() if v is
232
232
                     ROOT_PARENT]
233
233
        if len(new_roots) < 1:
 
234
            if self.final_kind(self.root) is None:
 
235
                self.cancel_deletion(self.root)
 
236
            if self.final_file_id(self.root) is None:
 
237
                self.version_file(self.tree_file_id(self.root),
 
238
                                     self.root)
234
239
            return
235
240
        if len(new_roots) != 1:
236
241
            raise ValueError('A tree cannot have two roots!')
778
783
                    to_mode |= 0010 & ~umask
779
784
            else:
780
785
                to_mode = current_mode & ~0111
781
 
            os.chmod(abspath, to_mode)
 
786
            osutils.chmod_if_possible(abspath, to_mode)
782
787
 
783
788
    def _new_entry(self, name, parent_id, file_id):
784
789
        """Helper function to create a new filesystem entry."""
1557
1562
        try:
1558
1563
            limbodir = urlutils.local_path_from_url(
1559
1564
                tree._transport.abspath('limbo'))
1560
 
            try:
1561
 
                os.mkdir(limbodir)
1562
 
            except OSError, e:
1563
 
                if e.errno == errno.EEXIST:
1564
 
                    raise ExistingLimbo(limbodir)
 
1565
            osutils.ensure_empty_directory_exists(
 
1566
                limbodir,
 
1567
                errors.ExistingLimbo)
1565
1568
            deletiondir = urlutils.local_path_from_url(
1566
1569
                tree._transport.abspath('pending-deletion'))
1567
 
            try:
1568
 
                os.mkdir(deletiondir)
1569
 
            except OSError, e:
1570
 
                if e.errno == errno.EEXIST:
1571
 
                    raise errors.ExistingPendingDeletion(deletiondir)
 
1570
            osutils.ensure_empty_directory_exists(
 
1571
                deletiondir,
 
1572
                errors.ExistingPendingDeletion)
1572
1573
        except:
1573
1574
            tree.unlock()
1574
1575
            raise
1637
1638
            else:
1638
1639
                raise
1639
1640
        if typefunc(mode):
1640
 
            os.chmod(self._limbo_name(trans_id), mode)
 
1641
            osutils.chmod_if_possible(self._limbo_name(trans_id), mode)
1641
1642
 
1642
1643
    def iter_tree_children(self, parent_id):
1643
1644
        """Iterate through the entry's tree children, if any"""
1748
1749
                mover.apply_deletions()
1749
1750
        finally:
1750
1751
            child_pb.finished()
1751
 
        if self.final_file_id(self.root) is None:
1752
 
            inventory_delta = [e for e in inventory_delta if e[0] != '']
1753
1752
        self._tree.apply_inventory_delta(inventory_delta)
1754
1753
        self._apply_observed_sha1s()
1755
1754
        self._done = True
2258
2257
        else:
2259
2258
            return None
2260
2259
 
2261
 
    def get_file_verifier(self, file_id, path=None, stat_value=None):
2262
 
        trans_id = self._transform.trans_id_file_id(file_id)
2263
 
        kind = self._transform._new_contents.get(trans_id)
2264
 
        if kind is None:
2265
 
            return self._transform._tree.get_file_verifier(file_id)
2266
 
        if kind == 'file':
2267
 
            fileobj = self.get_file(file_id)
2268
 
            try:
2269
 
                return ("SHA1", sha_file(fileobj))
2270
 
            finally:
2271
 
                fileobj.close()
2272
 
 
2273
2260
    def get_file_sha1(self, file_id, path=None, stat_value=None):
2274
2261
        trans_id = self._transform.trans_id_file_id(file_id)
2275
2262
        kind = self._transform._new_contents.get(trans_id)
3077
3064
                existing_file, new_file = conflict[2], conflict[1]
3078
3065
            else:
3079
3066
                existing_file, new_file = conflict[1], conflict[2]
3080
 
            new_name = tt.final_name(existing_file)+'.moved'
 
3067
            new_name = tt.final_name(existing_file) + '.moved'
3081
3068
            tt.adjust_path(new_name, final_parent, existing_file)
3082
3069
            new_conflicts.add((c_type, 'Moved existing file to',
3083
3070
                               existing_file, new_file))