{"id":23704046,"url":"https://github.com/toqueteos/git","last_synced_at":"2026-04-13T08:31:17.986Z","repository":{"id":9832957,"uuid":"11821333","full_name":"toqueteos/git","owner":"toqueteos","description":":sweat_smile: git implementation in Go. It's a TOY-PROJECT.","archived":false,"fork":false,"pushed_at":"2017-05-04T16:15:05.000Z","size":9,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-17T18:41:07.150Z","etag":null,"topics":["git","go"],"latest_commit_sha":null,"homepage":"http://godoc.org/github.com/toqueteos/git","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/toqueteos.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-08-01T16:08:27.000Z","updated_at":"2017-05-21T23:01:05.000Z","dependencies_parsed_at":"2022-07-21T15:49:17.490Z","dependency_job_id":null,"html_url":"https://github.com/toqueteos/git","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/toqueteos/git","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toqueteos%2Fgit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toqueteos%2Fgit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toqueteos%2Fgit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toqueteos%2Fgit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/toqueteos","download_url":"https://codeload.github.com/toqueteos/git/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toqueteos%2Fgit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31746101,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-13T06:26:45.479Z","status":"ssl_error","status_checked_at":"2026-04-13T06:26:44.645Z","response_time":93,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["git","go"],"created_at":"2024-12-30T13:12:07.967Z","updated_at":"2026-04-13T08:31:17.968Z","avatar_url":"https://github.com/toqueteos.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# git\r\n\r\n[![GoDoc](https://godoc.org/github.com/toqueteos/git?status.svg)](http://godoc.org/github.com/toqueteos/git)\r\n\r\ngit implementation in Go.\r\n\r\nThis is a toy project and it is abandoned, but I'm not deleting it.\r\n\r\nWhy so? Because of many reasons:\r\n\r\n- This repository got me a job, not kidding! (there I actually implemented a read-only git implementation in Go)\r\n- It helped me learning all the amazing things git is made (composed) of\r\n- This is a failure project of mine and I'm ashamed of it, it taught me lots of things!\r\n\r\n## When...?\r\n\r\n*... will this be ready?*\r\n\r\n**Never.**\r\n\r\nBut don't worry there's plenty of git libraries in Go, here's a couple of suggestions:\r\n\r\n- https://github.com/kourge/ggit superb documentation, super friendly and amazing guy!\r\n- https://github.com/src-d/go-git not the best documentation but gets the job done most of the time\r\n\r\n## Why?\r\n\r\nI wanted to learn how git works internally not just the commands to use it.\r\n\r\nAlso, I want `go get` to be independent of external commands so anyone can `go get` anything without installing git, MsysGit, TortoiseHg, Bazaar or any SCM out there supported by this tool.\r\n\r\nBy implementing git in Go `go get` can include additional features like fetching a repo at certain tag or commit (just an example).\r\n\r\nGo authors still have to approve this, which probably will be rejected just because there's no Mercurial and Bazaar Go implementations yet (if there are I don't know a thing about them).\r\n\r\n## Reference\r\n\r\nSome useful links that helped me understand some of the deepest concepts of git:\r\n\r\n- https://git-scm.com/book/en/v2/Git-Internals-Packfiles\r\n- http://stefan.saasen.me/articles/git-clone-in-haskell-from-the-bottom-up/\r\n- http://git.661346.n2.nabble.com/Exact-format-of-tree-objets-td7588984.html\r\n- http://git.rsbx.net/Documents/Git_Data_Formats.txt\r\n- https://www.youtube.com/watch?v=MYP56QJpDr4\r\n\r\nFeel free to email me!\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftoqueteos%2Fgit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftoqueteos%2Fgit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftoqueteos%2Fgit/lists"}