/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: Jelmer Vernooij
  • Date: 2020-06-15 01:29:36 UTC
  • mfrom: (7490.40.4 work)
  • mto: (7490.40.19 work)
  • mto: This revision was merged to the branch mainline in revision 7516.
  • Revision ID: jelmer@jelmer.uk-20200615012936-1adqbu592y7lzmy8
Merge upstream.

Show diffs side-by-side

added added

removed removed

Lines of Context:
221
221
    return RemoteGitError(message)
222
222
 
223
223
 
 
224
def parse_git_hangup(url, e):
 
225
    """Parse the error lines from a git servers stderr on hangup.
 
226
 
 
227
    :param url: URL of the remote repository
 
228
    :param e: A HangupException
 
229
    """
 
230
    stderr_lines = getattr(e, 'stderr_lines', None)
 
231
    if not stderr_lines:
 
232
        return e
 
233
    interesting_lines = [
 
234
        line for line in stderr_lines
 
235
        if line and line.replace('=', '')]
 
236
    if len(interesting_lines) == 1:
 
237
        interesting_line = interesting_lines[0]
 
238
        return parse_git_error(url, interesting_line)
 
239
    return RemoteGitError('\n'.join(stderr_lines))
 
240
 
 
241
 
224
242
class GitSmartTransport(Transport):
225
243
 
226
244
    def __init__(self, url, _client=None):
420
438
                prefix=(prefix.encode('utf-8') if prefix else None))
421
439
        except GitProtocolError as e:
422
440
            raise parse_git_error(self.transport.external_url(), e)
 
441
        except HangupException as e:
 
442
            raise parse_git_hangup(self.transport.external_url(), e)
423
443
        finally:
424
444
            if pb is not None:
425
445
                pb.finished()
442
462
            return result
443
463
        except GitProtocolError as e:
444
464
            raise parse_git_error(self.transport.external_url(), e)
 
465
        except HangupException as e:
 
466
            raise parse_git_hangup(self.transport.external_url(), e)
445
467
        finally:
446
468
            if pb is not None:
447
469
                pb.finished()
463
485
                generate_pack_data, progress)
464
486
        except GitProtocolError as e:
465
487
            raise parse_git_error(self.transport.external_url(), e)
 
488
        except HangupException as e:
 
489
            raise parse_git_hangup(self.transport.external_url(), e)
466
490
        finally:
467
491
            if pb is not None:
468
492
                pb.finished()
616
640
                    ret[tag_name_to_ref(tagname)] = new_sha
617
641
            return ret
618
642
        with source_store.lock_read():
619
 
            if lossy:
620
 
                generate_pack_data = source_store.generate_lossy_pack_data
621
 
            else:
622
 
                generate_pack_data = source_store.generate_pack_data
 
643
            def generate_pack_data(have, want, progress=None,
 
644
                                   ofs_delta=True):
 
645
                git_repo = getattr(source.repository, '_git', None)
 
646
                if git_repo:
 
647
                    shallow = git_repo.get_shallow()
 
648
                else:
 
649
                    shallow = None
 
650
                if lossy:
 
651
                    return source_store.generate_lossy_pack_data(
 
652
                        have, want, shallow=shallow,
 
653
                        progress=progress, ofs_delta=ofs_delta)
 
654
                elif shallow:
 
655
                    return source_store.generate_pack_data(
 
656
                        have, want, shallow=shallow,
 
657
                        progress=progress, ofs_delta=ofs_delta)
 
658
                else:
 
659
                    return source_store.generate_pack_data(
 
660
                        have, want, progress=progress, ofs_delta=ofs_delta)
623
661
            new_refs = self.send_pack(get_changed_refs, generate_pack_data)
624
662
        push_result.new_revid = repo.lookup_foreign_revision_id(
625
663
            new_refs[actual_refname])
722
760
            raise NotGitRepository()
723
761
        elif response.status != 200:
724
762
            raise GitProtocolError("unexpected http resp %d for %s" %
725
 
                                   (response.code, url))
 
763
                                   (response.status, url))
726
764
 
727
765
        # TODO: Optimization available by adding `preload_content=False` to the
728
766
        # request and just passing the `read` method on instead of going via