/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to workingtree.py

Special-case NULL_REVISION when looking for Git shas.

Show diffs side-by-side

added added

removed removed

Lines of Context:
25
25
from dulwich.objects import (
26
26
    Blob,
27
27
    )
 
28
from dulwich.protocol import (
 
29
    ZERO_SHA,
 
30
    )
28
31
import os
29
32
import stat
30
33
 
31
34
from bzrlib import (
32
35
    errors,
33
36
    ignores,
 
37
    inventory,
34
38
    lockable_files,
35
39
    lockdir,
36
40
    osutils,
50
54
    changes_from_git_changes,
51
55
    tree_delta_from_git_changes,
52
56
    )
53
 
 
 
57
from bzrlib.plugins.git.mapping import (
 
58
    GitFileIdMap,
 
59
    )
54
60
 
55
61
IGNORE_FILENAME = ".gitignore"
56
62
 
175
181
            head = self.repository._git.head()
176
182
        except KeyError, name:
177
183
            raise errors.NotBranchError("branch %s at %s" % (name, self.repository.base))
178
 
        basis_inv = self.repository.get_inventory(self.mapping.revision_id_foreign_to_bzr(head))
179
 
        result = GitIndexInventory(basis_inv, self.mapping, self.index,
180
 
            self.repository._git.object_store)
 
184
        basis_inv = self.repository.get_inventory(self.branch.lookup_foreign_revision_id(head))
 
185
        store = self.repository._git.object_store
 
186
        if head == ZERO_SHA:
 
187
            fileid_map = {}
 
188
            result = inventory.Inventory(root_id=None)
 
189
        else:
 
190
            fileid_map = self.mapping.get_fileid_map(store.__getitem__,
 
191
                store[head].tree)
 
192
            result = GitIndexInventory(basis_inv, fileid_map, self.index, store)
181
193
        self._set_inventory(result, dirty=False)
182
194
 
183
195
    @needs_read_lock
230
242
        changes = self._index.changes_from_tree(
231
243
            self.source._repository._git.object_store, self.source.tree, 
232
244
            want_unchanged=want_unchanged)
 
245
        source_fileid_map = self.source.mapping.get_fileid_map(
 
246
            self.source._repository._git.object_store.__getitem__,
 
247
            self.source.tree)
 
248
        if self.target.mapping.BZR_FILE_IDS_FILE is not None:
 
249
            try:
 
250
                file_id = self.target.path2id(
 
251
                    self.target.mapping.BZR_FILE_IDS_FILE)
 
252
            except errors.NoSuchId:
 
253
                target_fileid_map = {}
 
254
            else:
 
255
                target_fileid_map = self.import_fileid_map(Blob.from_string(self.target.file_text(file_id)))
 
256
        else:
 
257
            target_fileid_map = {}
 
258
        target_fileid_map = GitFileIdMap(target_fileid_map, self.target.mapping)
233
259
        ret = tree_delta_from_git_changes(changes, self.target.mapping, 
 
260
            (source_fileid_map, target_fileid_map),
234
261
            specific_file=specific_files, require_versioned=require_versioned)
235
262
        if want_unversioned:
236
263
            for e in self.target.extras():