Exemple #1
0
    def test_get_refs(self):
        local = open_repo('refs.git')
        self.addCleanup(tear_down_repo, local)

        client = LocalGitClient()
        refs = client.get_refs(local.path)
        self.assertDictEqual(local.refs.as_dict(), refs)
Exemple #2
0
    def test_get_refs(self):
        local = open_repo('refs.git')
        self.addCleanup(tear_down_repo, local)

        client = LocalGitClient()
        refs = client.get_refs(local.path)
        self.assertDictEqual(local.refs.as_dict(), refs)
Exemple #3
0
    def iter_remote_refs(self, url: str, base: Optional[str] = None, **kwargs):
        from dulwich.client import HTTPUnauthorized, get_transport_and_path
        from dulwich.errors import NotGitRepository
        from dulwich.porcelain import get_remote_repo

        try:
            _remote, location = get_remote_repo(self.repo, url)
            client, path = get_transport_and_path(location, **kwargs)
        except Exception as exc:
            raise InvalidRemoteSCMRepo(url) from exc

        try:
            if base:
                yield from (os.fsdecode(ref) for ref in client.get_refs(path)
                            if ref.startswith(os.fsencode(base)))
            else:
                yield from (os.fsdecode(ref) for ref in client.get_refs(path))
        except NotGitRepository as exc:
            raise InvalidRemoteSCMRepo(url) from exc
        except HTTPUnauthorized:
            raise GitAuthError(url)