/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

  • Committer: Jelmer Vernooij
  • Date: 2020-06-23 01:02:30 UTC
  • mfrom: (7490.40.27 work)
  • mto: This revision was merged to the branch mainline in revision 7517.
  • Revision ID: jelmer@jelmer.uk-20200623010230-62nnywznmb76h6ut
Merge lp:brz/3.1.

Show diffs side-by-side

added added

removed removed

Lines of Context:
59
59
    warning,
60
60
    )
61
61
 
62
 
from .config import (
63
 
    GitBranchConfig,
64
 
    GitBranchStack,
65
 
    )
66
62
from .errors import (
67
63
    NoPushSupport,
68
64
    )
132
128
        updates = {}
133
129
        conflicts = []
134
130
        source_tag_refs = self.source.branch.get_tag_refs()
 
131
        ref_to_tag_map = {}
135
132
 
136
133
        def get_changed_refs(old_refs):
137
134
            ret = dict(old_refs)
145
142
                    ret[ref_name] = unpeeled
146
143
                    updates[tag_name] = self.target.branch.repository.lookup_foreign_revision_id(
147
144
                        peeled)
 
145
                    ref_to_tag_map[ref_name] = tag_name
148
146
                    self.target.branch._tag_refs = None
149
147
                else:
150
148
                    conflicts.append(
153
151
                         self.target.branch.repository.lookup_foreign_revision_id(
154
152
                             old_refs[ref_name])))
155
153
            return ret
156
 
        self.target.branch.repository.controldir.send_pack(
 
154
        result = self.target.branch.repository.controldir.send_pack(
157
155
            get_changed_refs, lambda have, want: [])
 
156
        if result is not None and not isinstance(result, dict):
 
157
            for ref, error in result.ref_status.items():
 
158
                if error:
 
159
                    warning('unable to update ref %s: %s',
 
160
                            ref, error)
 
161
                    del updates[ref_to_tag_map[ref]]
158
162
        return updates, set(conflicts)
159
163
 
160
164
 
474
478
        return "git"
475
479
 
476
480
    def get_config(self):
 
481
        from .config import GitBranchConfig
477
482
        return GitBranchConfig(self)
478
483
 
479
484
    def get_config_stack(self):
 
485
        from .config import GitBranchStack
480
486
        return GitBranchStack(self)
481
487
 
482
488
    def _get_nick(self, local=False, possible_master_transports=None):
1165
1171
                isinstance(target, RemoteGitBranch))
1166
1172
 
1167
1173
    def _basic_push(self, overwrite, stop_revision, tag_selector=None):
 
1174
        from .remote import RemoteGitError
1168
1175
        result = GitBranchPushResult()
1169
1176
        result.source_branch = self.source
1170
1177
        result.target_branch = self.target
1196
1203
                    continue
1197
1204
                refs[tag_name_to_ref(name)] = sha
1198
1205
            return refs
1199
 
        self.target.repository.send_pack(
 
1206
        dw_result = self.target.repository.send_pack(
1200
1207
            get_changed_refs,
1201
1208
            self.source.repository._git.generate_pack_data)
 
1209
        if dw_result is not None and not isinstance(dw_result, dict):
 
1210
            error = dw_result.ref_status.get(self.target.ref)
 
1211
            if error:
 
1212
                raise RemoteGitError(error)
 
1213
            for ref, error in dw_result.ref_status.items():
 
1214
                if error:
 
1215
                    trace.warning('unable to open ref %s: %s',
 
1216
                                  ref, error)
1202
1217
        return result
1203
1218
 
1204
1219