/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

Provide VersionedFiles.get_annotator.

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
 
177
183
            raise errors.NotBranchError("branch %s at %s" % (name, self.repository.base))
178
184
        basis_inv = self.repository.get_inventory(self.branch.lookup_foreign_revision_id(head))
179
185
        store = self.repository._git.object_store
180
 
        fileid_map = self.mapping.get_fileid_map(store.__getitem__,
181
 
            store[head].tree)
182
 
        result = GitIndexInventory(basis_inv, fileid_map, self.index, 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)
183
193
        self._set_inventory(result, dirty=False)
184
194
 
185
195
    @needs_read_lock
245
255
                target_fileid_map = self.import_fileid_map(Blob.from_string(self.target.file_text(file_id)))
246
256
        else:
247
257
            target_fileid_map = {}
 
258
        target_fileid_map = GitFileIdMap(target_fileid_map, self.target.mapping)
248
259
        ret = tree_delta_from_git_changes(changes, self.target.mapping, 
249
260
            (source_fileid_map, target_fileid_map),
250
261
            specific_file=specific_files, require_versioned=require_versioned)