~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/transform.py

MergeĀ fromĀ mainline

Show diffs side-by-side

added added

removed removed

Lines of Context:
605
605
                if name == last_name:
606
606
                    conflicts.append(('duplicate', last_trans_id, trans_id,
607
607
                    name))
608
 
                last_name = name
609
 
                last_trans_id = trans_id
 
608
                try:
 
609
                    kind = self.final_kind(trans_id)
 
610
                except NoSuchFile:
 
611
                    kind = None
 
612
                file_id = self.final_file_id(trans_id)
 
613
                if kind is not None or file_id is not None:
 
614
                    last_name = name
 
615
                    last_trans_id = trans_id
610
616
        return conflicts
611
617
 
612
618
    def _duplicate_ids(self):
884
890
def build_tree(tree, wt):
885
891
    """Create working tree for a branch, using a Transaction."""
886
892
    file_trans_id = {}
 
893
    top_pb = bzrlib.ui.ui_factory.nested_progress_bar()
 
894
    pp = ProgressPhase("Build phase", 2, top_pb)
887
895
    tt = TreeTransform(wt)
888
896
    try:
 
897
        pp.next_phase()
889
898
        file_trans_id[wt.get_root_id()] = tt.trans_id_tree_file_id(wt.get_root_id())
890
899
        file_ids = topology_sorted_ids(tree)
891
 
        for file_id in file_ids:
892
 
            entry = tree.inventory[file_id]
893
 
            if entry.parent_id is None:
894
 
                continue
895
 
            if entry.parent_id not in file_trans_id:
896
 
                raise repr(entry.parent_id)
897
 
            parent_id = file_trans_id[entry.parent_id]
898
 
            file_trans_id[file_id] = new_by_entry(tt, entry, parent_id, tree)
 
900
        pb = bzrlib.ui.ui_factory.nested_progress_bar()
 
901
        try:
 
902
            for num, file_id in enumerate(file_ids):
 
903
                pb.update("Building tree", num, len(file_ids))
 
904
                entry = tree.inventory[file_id]
 
905
                if entry.parent_id is None:
 
906
                    continue
 
907
                if entry.parent_id not in file_trans_id:
 
908
                    raise repr(entry.parent_id)
 
909
                parent_id = file_trans_id[entry.parent_id]
 
910
                file_trans_id[file_id] = new_by_entry(tt, entry, parent_id, 
 
911
                                                      tree)
 
912
        finally:
 
913
            pb.finished()
 
914
        pp.next_phase()
899
915
        tt.apply()
900
916
    finally:
901
917
        tt.finalize()
 
918
        top_pb.finished()
902
919
 
903
920
def new_by_entry(tt, entry, parent_id, tree):
904
921
    """Create a new file according to its inventory entry"""
1081
1098
            raw_conflicts = resolve_conflicts(tt, child_pb)
1082
1099
        finally:
1083
1100
            child_pb.finished()
1084
 
        for conflict in cook_conflicts(raw_conflicts, tt):
 
1101
        conflicts = cook_conflicts(raw_conflicts, tt)
 
1102
        for conflict in conflicts:
1085
1103
            warning(conflict)
1086
1104
        pp.next_phase()
1087
1105
        tt.apply()
1089
1107
    finally:
1090
1108
        tt.finalize()
1091
1109
        pb.clear()
 
1110
    return conflicts
1092
1111
 
1093
1112
 
1094
1113
def resolve_conflicts(tt, pb=DummyProgress()):