Show HN: Gogit – Just enough Git (in Go) to push itself to GitHub

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
  • go-git

    A highly extensible Git implementation in pure Go. (by go-git)

  • I interpret "aims to be fully compatible" as meaning the operations it implements are intended to be compatible with how Git implements those operations. I do not interpret this statement as saying they implement all features of Git.

    They offer a document which directly shows what is and isn't supported, and it specifically notes quite a few things that aren't supported yet: https://github.com/go-git/go-git/blob/master/COMPATIBILITY.m...

    The godoc also says right upfront it "nowadays covers the majority of the plumbing read operations and some of the main write operations, but lacks the main porcelain operations such as merges." - https://pkg.go.dev/github.com/go-git/go-git/v5#pkg-overview

    > I'm saying it's not a reasonable choice over just using git directly, and is unlikely to ever be.

    OK, that's apparently true for your use-case. But again, what go-git implements is directly useful to a number of very popular projects, as well as literally two thousand less popular ones.

    I find the exported functionality to be high quality, at least for my own use-case. I'm not commenting on the code quality. If I need a shed for bikes, and someone is giving out free but ugly bikesheds, I'm thankful. I don't complain about the color of the bikeshed.

  • git-lfs

    Git extension for versioning large files

  • > I don’t know what that is

    its a standard output from `go doc`, rendered as HTML. if you dont recognize that, then you aren't really in a position to be commenting on the topic. nothing is stopping anyone from pinning to a tag:

    https://github.com/git-lfs/git-lfs/tags

    or even a commit and relying of a specific version of the software. yes upgrades might be painful but a module IS available.

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • Git

    Git Source Code Mirror - This is a publish-only repository but pull requests can be turned into patches to the mailing list via GitGitGadget (https://gitgitgadget.github.io/). Please follow Documentation/SubmittingPatches procedure for any of your improvements.

  • Personally I soldiered on to to the point of being able to extract objects from packfiles, before I realised just how monstrously and tediously complex `git rev-parse` is, and gave up. It's foundational to pretty much every porcelain command, so it's not really something you can leave out if you want a semi-functioning `git`. See https://git-scm.com/docs/git-rev-parse#_specifying_revisions and https://github.com/git/git/blob/ee48e70a829d1fa2da82f1478705... ; `git` really is an edifice.

  • dulwich

    Pure-Python Git implementation

  • > It seems a similar story with the rest of git.

    Dulwich[1] is a pure-python Git implementation that's been around for many years, meant to be used as a library. I used it a long time ago to make a git-backed wiki. There's also libgit2 which is exactly what it sounds like and it has mature Go bindings[2]. I'm sure there are more implementations.

    [1]: https://github.com/jelmer/dulwich

  • git2go

    Git to Go; bindings for libgit2. Like McDonald's but tastier.

  • sapling

    A Scalable, User-Friendly Source Control System.

  • > git-lfs, as in the binary, CLI application is the only (open) implementation in existence. There is nothing else.

    There’s at lease one in sapling and Mononoke.

    https://github.com/facebook/sapling/tree/main/eden/mononoke/...

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts