~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/transform.py

  • Committer: Jelmer Vernooij
  • Date: 2011-10-04 22:20:49 UTC
  • mto: This revision was merged to the branch mainline in revision 6190.
  • Revision ID: jelmer@samba.org-20111004222049-d9glniyleu0pppzd
Add a load_plugin_translations method.

Show diffs side-by-side

added added

removed removed

Lines of Context:
42
42
    ui,
43
43
    urlutils,
44
44
    )
 
45
from bzrlib.i18n import gettext
45
46
""")
46
47
from bzrlib.errors import (DuplicateKey, MalformedTransform, NoSuchFile,
47
48
                           ReusingTransform, CantMoveRoot,
231
232
        new_roots = [k for k, v in self._new_parent.iteritems() if v is
232
233
                     ROOT_PARENT]
233
234
        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)
239
235
            return
240
236
        if len(new_roots) != 1:
241
237
            raise ValueError('A tree cannot have two roots!')
243
239
            self._new_root = new_roots[0]
244
240
            return
245
241
        old_new_root = new_roots[0]
246
 
        # TODO: What to do if a old_new_root is present, but self._new_root is
247
 
        #       not listed as being removed? This code explicitly unversions
248
 
        #       the old root and versions it with the new file_id. Though that
249
 
        #       seems like an incomplete delta
250
 
 
251
242
        # unversion the new root's directory.
252
 
        file_id = self.final_file_id(old_new_root)
 
243
        if self.final_kind(self._new_root) is None:
 
244
            file_id = self.final_file_id(old_new_root)
 
245
        else:
 
246
            file_id = self.final_file_id(self._new_root)
253
247
        if old_new_root in self._new_id:
254
248
            self.cancel_versioning(old_new_root)
255
249
        else:
1733
1727
        child_pb = ui.ui_factory.nested_progress_bar()
1734
1728
        try:
1735
1729
            if precomputed_delta is None:
1736
 
                child_pb.update('Apply phase', 0, 2)
 
1730
                child_pb.update(gettext('Apply phase'), 0, 2)
1737
1731
                inventory_delta = self._generate_inventory_delta()
1738
1732
                offset = 1
1739
1733
            else:
1744
1738
            else:
1745
1739
                mover = _mover
1746
1740
            try:
1747
 
                child_pb.update('Apply phase', 0 + offset, 2 + offset)
 
1741
                child_pb.update(gettext('Apply phase'), 0 + offset, 2 + offset)
1748
1742
                self._apply_removals(mover)
1749
 
                child_pb.update('Apply phase', 1 + offset, 2 + offset)
 
1743
                child_pb.update(gettext('Apply phase'), 1 + offset, 2 + offset)
1750
1744
                modified_paths = self._apply_insertions(mover)
1751
1745
            except:
1752
1746
                mover.rollback()
1755
1749
                mover.apply_deletions()
1756
1750
        finally:
1757
1751
            child_pb.finished()
 
1752
        if self.final_file_id(self.root) is None:
 
1753
            inventory_delta = [e for e in inventory_delta if e[0] != '']
1758
1754
        self._tree.apply_inventory_delta(inventory_delta)
1759
1755
        self._apply_observed_sha1s()
1760
1756
        self._done = True
1770
1766
        try:
1771
1767
            for num, trans_id in enumerate(self._removed_id):
1772
1768
                if (num % 10) == 0:
1773
 
                    child_pb.update('removing file', num, total_entries)
 
1769
                    child_pb.update(gettext('removing file'), num, total_entries)
1774
1770
                if trans_id == self._new_root:
1775
1771
                    file_id = self._tree.get_root_id()
1776
1772
                else:
1788
1784
            final_kinds = {}
1789
1785
            for num, (path, trans_id) in enumerate(new_paths):
1790
1786
                if (num % 10) == 0:
1791
 
                    child_pb.update('adding file',
 
1787
                    child_pb.update(gettext('adding file'),
1792
1788
                                    num + len(self._removed_id), total_entries)
1793
1789
                file_id = new_path_file_ids[trans_id]
1794
1790
                if file_id is None:
1838
1834
                # do not attempt to move root into a subdirectory of itself.
1839
1835
                if path == '':
1840
1836
                    continue
1841
 
                child_pb.update('removing file', num, len(tree_paths))
 
1837
                child_pb.update(gettext('removing file'), num, len(tree_paths))
1842
1838
                full_path = self._tree.abspath(path)
1843
1839
                if trans_id in self._removed_contents:
1844
1840
                    delete_path = os.path.join(self._deletiondir, trans_id)
1873
1869
        try:
1874
1870
            for num, (path, trans_id) in enumerate(new_paths):
1875
1871
                if (num % 10) == 0:
1876
 
                    child_pb.update('adding file', num, len(new_paths))
 
1872
                    child_pb.update(gettext('adding file'), num, len(new_paths))
1877
1873
                full_path = self._tree.abspath(path)
1878
1874
                if trans_id in self._needs_rename:
1879
1875
                    try:
2263
2259
        else:
2264
2260
            return None
2265
2261
 
 
2262
    def get_file_verifier(self, file_id, path=None, stat_value=None):
 
2263
        trans_id = self._transform.trans_id_file_id(file_id)
 
2264
        kind = self._transform._new_contents.get(trans_id)
 
2265
        if kind is None:
 
2266
            return self._transform._tree.get_file_verifier(file_id)
 
2267
        if kind == 'file':
 
2268
            fileobj = self.get_file(file_id)
 
2269
            try:
 
2270
                return ("SHA1", sha_file(fileobj))
 
2271
            finally:
 
2272
                fileobj.close()
 
2273
 
2266
2274
    def get_file_sha1(self, file_id, path=None, stat_value=None):
2267
2275
        trans_id = self._transform.trans_id_file_id(file_id)
2268
2276
        kind = self._transform._new_contents.get(trans_id)
2576
2584
                    existing_files.update(f[0] for f in files)
2577
2585
            for num, (tree_path, entry) in \
2578
2586
                enumerate(tree.inventory.iter_entries_by_dir()):
2579
 
                pb.update("Building tree", num - len(deferred_contents), total)
 
2587
                pb.update(gettext("Building tree"), num - len(deferred_contents), total)
2580
2588
                if entry.parent_id is None:
2581
2589
                    continue
2582
2590
                reparent = False
2666
2674
                new_desired_files.append((file_id,
2667
2675
                    (trans_id, tree_path, text_sha1)))
2668
2676
                continue
2669
 
            pb.update('Adding file contents', count + offset, total)
 
2677
            pb.update(gettext('Adding file contents'), count + offset, total)
2670
2678
            if hardlink:
2671
2679
                tt.create_hardlink(accelerator_tree.abspath(accelerator_path),
2672
2680
                                   trans_id)
2693
2701
            contents = filtered_output_bytes(contents, filters,
2694
2702
                ContentFilterContext(tree_path, tree))
2695
2703
        tt.create_file(contents, trans_id, sha1=text_sha1)
2696
 
        pb.update('Adding file contents', count + offset, total)
 
2704
        pb.update(gettext('Adding file contents'), count + offset, total)
2697
2705
 
2698
2706
 
2699
2707
def _reparent_children(tt, old_parent, new_parent):
3040
3048
    pb = ui.ui_factory.nested_progress_bar()
3041
3049
    try:
3042
3050
        for n in range(10):
3043
 
            pb.update('Resolution pass', n+1, 10)
 
3051
            pb.update(gettext('Resolution pass'), n+1, 10)
3044
3052
            conflicts = tt.find_conflicts()
3045
3053
            if len(conflicts) == 0:
3046
3054
                return new_conflicts