/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/remote.py

  • Committer: Breezy landing bot
  • Author(s): Jelmer Vernooij
  • Date: 2020-06-11 12:46:45 UTC
  • mfrom: (7511.1.1 actions-no-fork)
  • Revision ID: breezy.the.bot@gmail.com-20200611124645-4lx66gps99i0hmzh
Avoid using fork when running the testsuite in github actions.

Merged from https://code.launchpad.net/~jelmer/brz/actions-no-fork/+merge/385565

Show diffs side-by-side

added added

removed removed

Lines of Context:
76
76
    NoSuchRef,
77
77
    )
78
78
from .mapping import (
79
 
    encode_git_path,
80
79
    mapping_registry,
81
80
    )
82
81
from .object_store import (
116
115
    )
117
116
import os
118
117
import select
 
118
import tempfile
119
119
 
120
120
import urllib.parse as urlparse
121
121
from urllib.parse import splituser
204
204
    if re.match('(.+) is not a valid repository name',
205
205
                message.splitlines()[0]):
206
206
        return NotBranchError(url, message)
207
 
    if message == (
208
 
            'GitLab: You are not allowed to push code to protected branches '
209
 
            'on this project.'):
210
 
        return PermissionDenied(url, message)
211
207
    m = re.match(r'Permission to ([^ ]+) denied to ([^ ]+)\.', message)
212
208
    if m:
213
209
        return PermissionDenied(m.group(1), 'denied to %s' % m.group(2))
224
220
    stderr_lines = getattr(e, 'stderr_lines', None)
225
221
    if not stderr_lines:
226
222
        return e
227
 
    if all(line.startswith(b'remote: ') for line in stderr_lines):
228
 
        stderr_lines = [
229
 
            line[len(b'remote: '):] for line in stderr_lines]
230
223
    interesting_lines = [
231
224
        line for line in stderr_lines
232
225
        if line and line.replace(b'=', b'')]
434
427
                write_error,
435
428
                format=(format.encode('ascii') if format else None),
436
429
                subdirs=subdirs,
437
 
                prefix=(encode_git_path(prefix) if prefix else None))
 
430
                prefix=(prefix.encode('utf-8') if prefix else None))
 
431
        except GitProtocolError as e:
 
432
            raise parse_git_error(self.transport.external_url(), e)
438
433
        except HangupException as e:
439
434
            raise parse_git_hangup(self.transport.external_url(), e)
440
 
        except GitProtocolError as e:
441
 
            raise parse_git_error(self.transport.external_url(), e)
442
435
        finally:
443
436
            if pb is not None:
444
437
                pb.finished()
459
452
            self._refs = remote_refs_dict_to_container(
460
453
                result.refs, result.symrefs)
461
454
            return result
 
455
        except GitProtocolError as e:
 
456
            raise parse_git_error(self.transport.external_url(), e)
462
457
        except HangupException as e:
463
458
            raise parse_git_hangup(self.transport.external_url(), e)
464
 
        except GitProtocolError as e:
465
 
            raise parse_git_error(self.transport.external_url(), e)
466
459
        finally:
467
460
            if pb is not None:
468
461
                pb.finished()
482
475
            return self._client.send_pack(
483
476
                self._client_path, get_changed_refs_wrapper,
484
477
                generate_pack_data, progress)
 
478
        except GitProtocolError as e:
 
479
            raise parse_git_error(self.transport.external_url(), e)
485
480
        except HangupException as e:
486
481
            raise parse_git_hangup(self.transport.external_url(), e)
487
 
        except GitProtocolError as e:
488
 
            raise parse_git_error(self.transport.external_url(), e)
489
482
        finally:
490
483
            if pb is not None:
491
484
                pb.finished()
514
507
 
515
508
        def generate_pack_data(have, want, ofs_delta=False):
516
509
            return pack_objects_to_data([])
517
 
        result = self.send_pack(get_changed_refs, generate_pack_data)
518
 
        if result is not None and not isinstance(result, dict):
519
 
            error = result.ref_status.get(refname)
520
 
            if error:
521
 
                raise RemoteGitError(error)
 
510
        self.send_pack(get_changed_refs, generate_pack_data)
522
511
 
523
512
    @property
524
513
    def user_url(self):
588
577
            # No revision supplied by the user, default to the branch
589
578
            # revision
590
579
            revision_id = source.last_revision()
591
 
        else:
592
 
            if not source.repository.has_revision(revision_id):
593
 
                raise NoSuchRevision(source, revision_id)
594
580
 
595
581
        push_result = GitPushResult()
596
582
        push_result.workingtree_updated = None
643
629
                            new_sha = repo.lookup_bzr_revision_id(revid)[0]
644
630
                        except errors.NoSuchRevision:
645
631
                            continue
646
 
                        else:
647
 
                            if not source.repository.has_revision(revid):
648
 
                                continue
649
632
                    ret[tag_name_to_ref(tagname)] = new_sha
650
633
            return ret
651
634
        with source_store.lock_read():
667
650
                else:
668
651
                    return source_store.generate_pack_data(
669
652
                        have, want, progress=progress, ofs_delta=ofs_delta)
670
 
            dw_result = self.send_pack(get_changed_refs, generate_pack_data)
671
 
            if not isinstance(dw_result, dict):
672
 
                new_refs = dw_result.refs
673
 
                error = dw_result.ref_status.get(actual_refname)
674
 
                if error:
675
 
                    raise RemoteGitError(error)
676
 
                for ref, error in dw_result.ref_status.items():
677
 
                    if error:
678
 
                        trace.warning('unable to open ref %s: %s',
679
 
                                      ref, error)
680
 
            else:  # dulwich < 0.20.4
681
 
                new_refs = dw_result
 
653
            new_refs = self.send_pack(get_changed_refs, generate_pack_data)
682
654
        push_result.new_revid = repo.lookup_foreign_revision_id(
683
655
            new_refs[actual_refname])
684
656
        if old_sha is not None:
883
855
        """
884
856
        commit = self._repository.lookup_bzr_revision_id(
885
857
            self.get_revision_id())[0]
886
 
        import tempfile
887
858
        f = tempfile.SpooledTemporaryFile()
888
859
        # git-upload-archive(1) generaly only supports refs. So let's see if we
889
860
        # can find one.
940
911
 
941
912
    def fetch_objects(self, determine_wants, graph_walker, resolve_ext_ref,
942
913
                      progress=None):
943
 
        import tempfile
944
914
        fd, path = tempfile.mkstemp(suffix=".pack")
945
915
        try:
946
916
            self.fetch_pack(determine_wants, graph_walker,
999
969
 
1000
970
        def generate_pack_data(have, want, ofs_delta=False):
1001
971
            return pack_objects_to_data([])
1002
 
        result = self.repository.send_pack(
1003
 
            get_changed_refs, generate_pack_data)
1004
 
        if result and not isinstance(result, dict):
1005
 
            error = result.ref_status.get(ref)
1006
 
            if error:
1007
 
                raise RemoteGitError(error)
 
972
        self.repository.send_pack(get_changed_refs, generate_pack_data)
1008
973
 
1009
974
 
1010
975
class RemoteGitBranch(GitBranch):
1088
1053
            return {self.ref: sha}
1089
1054
        def generate_pack_data(have, want, ofs_delta=False):
1090
1055
            return pack_objects_to_data([])
1091
 
        result = self.repository.send_pack(
1092
 
            get_changed_refs, generate_pack_data)
1093
 
        if result is not None and not isinstance(result, dict):
1094
 
            error = result.ref_status.get(self.ref)
1095
 
            if error:
1096
 
                raise RemoteGitError(error)
 
1056
        self.repository.send_pack(get_changed_refs, generate_pack_data)
1097
1057
        self._sha = sha
1098
1058
 
1099
1059