{"id":19805986,"url":"https://github.com/cycloidio/pkt-line","last_synced_at":"2026-06-05T21:31:18.661Z","repository":{"id":244993397,"uuid":"816941665","full_name":"cycloidio/pkt-line","owner":"cycloidio","description":"parser for git pkt-line protocol forked from github.com/google/gitprotocolio","archived":false,"fork":false,"pushed_at":"2024-06-19T07:41:11.000Z","size":41,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-01-11T06:13:21.662Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cycloidio.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-06-18T17:37:32.000Z","updated_at":"2024-06-19T07:41:15.000Z","dependencies_parsed_at":"2024-06-18T22:35:23.438Z","dependency_job_id":"49b7dc2e-bd95-4f6f-b4eb-6c8949ff1094","html_url":"https://github.com/cycloidio/pkt-line","commit_stats":{"total_commits":8,"total_committers":3,"mean_commits":"2.6666666666666665","dds":0.25,"last_synced_commit":"6629fba48b19ab7f1b45873892318b4f9c4f29ab"},"previous_names":["cycloidio/pkt-line"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cycloidio%2Fpkt-line","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cycloidio%2Fpkt-line/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cycloidio%2Fpkt-line/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cycloidio%2Fpkt-line/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cycloidio","download_url":"https://codeload.github.com/cycloidio/pkt-line/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241150243,"owners_count":19918334,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-12T09:06:06.312Z","updated_at":"2025-02-28T12:19:43.862Z","avatar_url":"https://github.com/cycloidio.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# pktline\n\nThis project is a fork of [gitprotocolio](github.com/google/gitprotocolio).\n\nA Git protocol parser written in Go.\n\nThis is more like an experimental project to better understand the protocol.\n\nThis is not an official Google product (i.e. a 20% project).\n\n## Background\n\nGit protocol is defined in\n[Documentation/technical/pack-protocol.txt](https://git.kernel.org/pub/scm/git/git.git/tree/Documentation/technical/pack-protocol.txt).\nThis is not a complete definition. Also, a transport specific spec\n[Documentation/technical/http-protocol.txt](https://git.kernel.org/pub/scm/git/git.git/tree/Documentation/technical/http-protocol.txt)\nis not complete. This project was started so that these upstream protocol spec\nbecomes more accurate. To verify the written syntax is accurate, this project\nincludes a Git protocol parser written in Go, and have end-to-end test suites.\n\nThis makes it easy to write a test case for Git client. Currently the test cases\nare run against the canonical Git implementation, but this can be extended to\nrun against JGit, etc.. Also it makes it easy to test an attack case. With this\nlibrary, one can write an attack case like\n[git-bomb](https://github.com/Katee/git-bomb) against Git protocol by producing\na request that is usually not produced by a sane Git client. Protocol properties\ncan also be checked. For example, it's possible to write a test to check valid\nrequest/response's prefixes are not a valid request/response. This property\nmakes sure a client won't process an incomplete response thinking it's complete.\n\n## TODOs\n\n*    Protocol semantics is not defined.\n\n     The syntax is relatively complete. The semantics is not even mentioned. One\n     idea is to define the semantics by treating the request/response as an\n     operation to modify Git repositories. This perspective makes it possible to\n     define a formal protocol semantics in a same way as programming language\n     formal semantics.\n\n     Defining a simple git-push semantics seems easy. Defining a pack\n     negotiation semantics for shallow cloned repositories seems difficult.\n\n*    Upstream pack-protocol.txt is not updated.\n\n     The initial purpose, create a complete pack-protocol.txt, is not yet done.\n     We can start from a minor fix (e.g. capability separator in some places is\n     space not NUL). Also relationship between Git protocol and network\n     transports (HTTPS, SSH, Git wire) are good to be mentioned.\n\n*    Bidi-transports are not tested and defined.\n\n     Git's bidi-transports, SSH and Git-wire protocol, are not tested with this\n     project and the protocol syntax is also not defined. The majority of the\n     syntax is same, but there's a slight difference. Go has an SSH library, so\n     it's easy to run a test SSH server.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcycloidio%2Fpkt-line","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcycloidio%2Fpkt-line","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcycloidio%2Fpkt-line/lists"}