/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/git/branch.py

Support user.signingkey configuration variable in .git/config.

Merged from https://code.launchpad.net/~jelmer/brz/local-git-key/+merge/381000

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
 
18
18
"""An adapter between a Git Branch and a Bazaar Branch"""
19
19
 
 
20
from __future__ import absolute_import
20
21
 
21
 
import contextlib
22
22
from io import BytesIO
23
23
from collections import defaultdict
24
24
 
35
35
 
36
36
from .. import (
37
37
    branch,
 
38
    cleanup,
38
39
    config,
39
40
    controldir,
40
41
    errors,
49
50
from ..revision import (
50
51
    NULL_REVISION,
51
52
    )
 
53
from ..sixish import (
 
54
    text_type,
 
55
    viewitems,
 
56
    )
52
57
from ..tag import (
53
58
    Tags,
54
59
    InterTags,
234
239
            master = None
235
240
        else:
236
241
            master = self.target.branch.get_master_branch()
237
 
        with contextlib.ExitStack() as es:
 
242
        with cleanup.ExitStack() as es:
238
243
            if master is not None:
239
244
                es.enter_context(master.lock_write())
240
245
            updates, conflicts = self._merge_to(
322
327
 
323
328
    def _set_tag_dict(self, to_dict):
324
329
        extra = set(self.refs.allkeys())
325
 
        for k, revid in to_dict.items():
 
330
        for k, revid in viewitems(to_dict):
326
331
            name = tag_name_to_ref(k)
327
332
            if name in extra:
328
333
                extra.remove(name)
844
849
        :return: iterator over (ref_name, tag_name, peeled_sha1, unpeeled_sha1)
845
850
        """
846
851
        refs = self.repository.controldir.get_refs_container()
847
 
        for ref_name, unpeeled in refs.as_dict().items():
 
852
        for ref_name, unpeeled in viewitems(refs.as_dict()):
848
853
            try:
849
854
                tag_name = ref_to_tag_name(ref_name)
850
855
            except (ValueError, UnicodeDecodeError):
852
857
            peeled = refs.get_peeled(ref_name)
853
858
            if peeled is None:
854
859
                peeled = unpeeled
855
 
            if not isinstance(tag_name, str):
 
860
            if not isinstance(tag_name, text_type):
856
861
                raise TypeError(tag_name)
857
862
            yield (ref_name, tag_name, peeled, unpeeled)
858
863
 
1096
1101
        if local and not bound_location:
1097
1102
            raise errors.LocalRequiresBoundBranch()
1098
1103
        source_is_master = False
1099
 
        with contextlib.ExitStack() as es:
 
1104
        with cleanup.ExitStack() as es:
1100
1105
            es.enter_context(self.source.lock_read())
1101
1106
            if bound_location:
1102
1107
                # bound_location comes from a config file, some care has to be
1187
1192
                    raise errors.DivergedBranches(self.source, self.target)
1188
1193
            refs = {self.target.ref: new_ref}
1189
1194
            result.new_revid = stop_revision
1190
 
            for name, sha in (
1191
 
                    self.source.repository._git.refs.as_dict(b"refs/tags").items()):
 
1195
            for name, sha in viewitems(
 
1196
                    self.source.repository._git.refs.as_dict(b"refs/tags")):
1192
1197
                if tag_selector and not tag_selector(name):
1193
1198
                    continue
1194
1199
                if sha not in self.source.repository._git:
1353
1358
        if fetch_tags is None:
1354
1359
            c = self.source.get_config_stack()
1355
1360
            fetch_tags = c.get('branch.fetch_tags')
1356
 
        for name, revid in self.source.tags.get_tag_dict().items():
 
1361
        for name, revid in viewitems(self.source.tags.get_tag_dict()):
1357
1362
            if self.source.repository.has_revision(revid):
1358
1363
                ref = tag_name_to_ref(name)
1359
1364
                if not check_ref_format(ref):
1390
1395
            # updated that hasn't actually been updated.
1391
1396
            return False
1392
1397
        # FIXME: Check for diverged branches
1393
 
        for ref, (git_sha, revid) in new_refs.items():
 
1398
        for ref, (git_sha, revid) in viewitems(new_refs):
1394
1399
            if ref_equals(ret, ref, git_sha, revid):
1395
1400
                # Already up to date
1396
1401
                if git_sha is None:
1429
1434
            stop_revision = self.source.last_revision()
1430
1435
        ret = []
1431
1436
        if fetch_tags:
1432
 
            for k, v in self.source.tags.get_tag_dict().items():
 
1437
            for k, v in viewitems(self.source.tags.get_tag_dict()):
1433
1438
                ret.append((None, v))
1434
1439
        ret.append((None, stop_revision))
1435
1440
        try: