/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 breezy/plugins/git/commit.py

  • Committer: Breezy landing bot
  • Author(s): Jelmer Vernooij
  • Date: 2018-07-03 03:20:44 UTC
  • mfrom: (7018.3.10 git-fixes)
  • Revision ID: breezy.the.bot@gmail.com-20180703032044-t5a5w5y0tmzrbezc
Port a few more bits of the git plugin to python 3.

Merged from https://code.launchpad.net/~jelmer/brz/git-fixes2/+merge/348803

Show diffs side-by-side

added added

removed removed

Lines of Context:
39
39
from ...repository import (
40
40
    CommitBuilder,
41
41
    )
 
42
from ...sixish import (
 
43
    viewitems,
 
44
    )
42
45
 
43
46
from dulwich.objects import (
44
47
    S_IFGITLINK,
164
167
                fileid_map = dict(basis_tree._fileid_map.file_ids)
165
168
            except AttributeError:
166
169
                fileid_map = {}
167
 
            for path, file_id in self._override_fileids.iteritems():
168
 
                if type(path) is not str:
 
170
            for path, file_id in viewitems(self._override_fileids):
 
171
                if not isinstance(path, bytes):
169
172
                    raise TypeError(path)
170
173
                if file_id is None:
171
174
                    if path in fileid_map:
172
175
                        del fileid_map[path]
173
176
                else:
174
 
                    if type(file_id) is not str:
 
177
                    if not isinstance(file_id, bytes):
175
178
                        raise TypeError(file_id)
176
179
                    fileid_map[path] = file_id
177
180
            if fileid_map:
193
196
 
194
197
    def finish_inventory(self):
195
198
        # eliminate blobs that were removed
196
 
        for path, entry in iter(self._blobs.items()):
197
 
            if entry is None:
198
 
                del self._blobs[path]
 
199
        self._blobs = {k: v for (k, v) in viewitems(self._blobs) if v is not None}
199
200
 
200
201
    def _iterblobs(self):
201
 
        return ((path, sha, mode) for (path, (mode, sha)) in self._blobs.iteritems())
 
202
        return ((path, sha, mode) for (path, (mode, sha)) in viewitems(self._blobs))
202
203
 
203
204
    def commit(self, message):
204
205
        self._validate_unicode_text(message, 'commit message')
205
206
        c = Commit()
206
207
        c.parents = [self.repository.lookup_bzr_revision_id(revid)[0] for revid in self.parents]
207
208
        c.tree = commit_tree(self.store, self._iterblobs())
208
 
        c.encoding = self._revprops.pop(u'git-explicit-encoding', 'utf-8')
209
 
        c.committer = fix_person_identifier(self._committer.encode(c.encoding))
210
 
        c.author = fix_person_identifier(self._revprops.pop('author', self._committer).encode(c.encoding))
 
209
        encoding = self._revprops.pop(u'git-explicit-encoding', 'utf-8')
 
210
        c.encoding = encoding.encode('ascii')
 
211
        c.committer = fix_person_identifier(self._committer.encode(encoding))
 
212
        c.author = fix_person_identifier(self._revprops.pop('author', self._committer).encode(encoding))
211
213
        if self._revprops:
212
214
            raise NotImplementedError(self._revprops)
213
215
        c.commit_time = int(self._timestamp)
214
216
        c.author_time = int(self._timestamp)
215
217
        c.commit_timezone = self._timezone
216
218
        c.author_timezone = self._timezone
217
 
        c.message = message.encode(c.encoding)
 
219
        c.message = message.encode(encoding)
218
220
        if self._config_stack.get('create_signatures') == _mod_config.SIGN_ALWAYS:
219
221
            strategy = gpg.GPGStrategy(self._config_stack)
220
222
            c.gpgsig = strategy.sign(c.as_raw_string(), gpg.MODE_DETACH)