~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/dirstate.py

  • Committer: Andrew Bennetts
  • Date: 2011-03-15 07:54:39 UTC
  • mfrom: (0.38.5 trunk)
  • mto: This revision was merged to the branch mainline in revision 5726.
  • Revision ID: andrew.bennetts@canonical.com-20110315075439-nzm293joz143cx0k
Merge bzr-changelog-merge plugin.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2006-2010 Canonical Ltd
 
1
# Copyright (C) 2006-2011 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
2681
2681
        if tracing:
2682
2682
            trace.mutter("set_state_from_inventory complete.")
2683
2683
 
 
2684
    def set_state_from_scratch(self, working_inv, parent_trees, parent_ghosts):
 
2685
        """Wipe the currently stored state and set it to something new.
 
2686
 
 
2687
        This is a hard-reset for the data we are working with.
 
2688
        """
 
2689
        # Technically, we really want a write lock, but until we write, we
 
2690
        # don't really need it.
 
2691
        self._requires_lock()
 
2692
        # root dir and root dir contents with no children. We have to have a
 
2693
        # root for set_state_from_inventory to work correctly.
 
2694
        empty_root = (('', '', inventory.ROOT_ID),
 
2695
                      [('d', '', 0, False, DirState.NULLSTAT)])
 
2696
        empty_tree_dirblocks = [('', [empty_root]), ('', [])]
 
2697
        self._set_data([], empty_tree_dirblocks)
 
2698
        self.set_state_from_inventory(working_inv)
 
2699
        self.set_parent_trees(parent_trees, parent_ghosts)
 
2700
 
2684
2701
    def _make_absent(self, current_old):
2685
2702
        """Mark current_old - an entry - as absent for tree 0.
2686
2703
 
2876
2893
            # converted to relocated.
2877
2894
            if path_utf8 is None:
2878
2895
                raise AssertionError('no path')
2879
 
            existing_keys = id_index[key[2]]
 
2896
            existing_keys = id_index.get(key[2], ())
2880
2897
            if key not in existing_keys:
2881
2898
                raise AssertionError('We found the entry in the blocks, but'
2882
2899
                    ' the key is not in the id_index.'
2883
2900
                    ' key: %s, existing_keys: %s' % (key, existing_keys))
2884
 
            for entry_key in id_index[key[2]]:
 
2901
            for entry_key in existing_keys:
2885
2902
                # TODO:PROFILING: It might be faster to just update
2886
2903
                # rather than checking if we need to, and then overwrite
2887
2904
                # the one we are located at.