Hacker News

Top stories

Live mirror
30 storiesupdated just nowView source snapshot
  1. I built non-autoregressive decision models with RL a year ago(convaiinnovations.com ↗)
    204comments
  2. AI-generated posters don’t have to be horrible(john.hartnup.uk ↗)
    597comments
  3. Btrfs/ZFS/bcachefs under workloads classic benchmarks skip(bartosz.fenski.pl ↗)
    27comments
  4. Human brain is two separate organs, Stanford Medicine-led research finds(stanford.edu ↗)
    207comments
  5. A graphical desktop for the ZX Spectrum(github.com/mindbox77 ↗)
    89comments
  6. Tin: full-text search for Postgres(planetscale.com ↗)
    61comments
  7. Suzanne Ciani's Buchla Cookbook(echo.orpheusinstituut.be ↗)
    8comments
  8. UFO Series Home Page: "UFO" TV Series from 1970(ufoseries.com ↗)
    1comments
  9. The Secret Life of Circuits(coredump.cx ↗)
    62comments
  10. Show HN: CUA-S1 – A System One Model for Computer Use(github.com/trycua ↗)
    1comments
  11. Android 17 is the first since 3.x to add new APIs without releasing to the AOSP(grapheneos.social ↗)
    614comments
  12. Supabase (YC S20) Is Hiring for OrioleDB(supabase.link ↗)
    discuss
  13. Black Holes or Black Hole Stars? Astronomers Spar over 'Little Red Dots'(quantamagazine.org ↗)
    31comments
  14. New evidence for hidden chambers beyond Tutankhamun's tomb(nature.com ↗)
    20comments
  15. Almost Never Use AI to Write Anything Substantive(erichgrunewald.substack.com ↗)
    57comments
  16. GPT-6 Astra Solves a WWI German Radio Cipher(prinzai.com ↗)
    152comments
  17. San Francisco Onion Futures Company(onionfutures.com ↗)
    141comments
  18. Adventures in Microcontroller Circuit Debugging(bigmessowires.com ↗)
    1comments
  19. How to Write with an LLM(sockpuppet.org ↗)
    367comments
  20. Cloudflare Quick Tunnels(cloudflare.com ↗)
    303comments
  21. If math is more than proof, we need to better celebrate the rest of it(terrytao.wordpress.com ↗)
    222comments
  22. What Zig felt like, coming from Rust(besok.github.io ↗)
    169comments
  23. You can run Git on object storage if you re-make packfiles(tigrisdata.com ↗)
    30comments
  24. Saving another 100TB of RAM(cloudflare.com ↗)
    98comments
  25. Communication by means of modulated Johnson noise(pnas.org ↗)
    25comments
  26. Asking Authors About Their Own Papers(medium.com/tmlrorg ↗)
    57comments
  27. SDCC – Small Device C Compiler(sourceforge.net ↗)
    28comments
  28. Science Is Open Software(jepedersen.dk ↗)
    64comments
  29. The first new cat species discovered in 100 years(nationalgeographic.com ↗)
    134comments
  30. How OpenAI Used Its Own LLMs to Design Its Jalapeño Chip(ieee.org ↗)
    128comments

You can run Git on object storage if you re-make packfiles

120 pointsby 3d agotigrisdata.com
29 comments
14h agoHN ↗

Nice. I saw some git-on-durable-objects projects but I'd so much prefer a straight object storage option.

13h agoHN ↗

Sweet. It’s kinda wild to me that this hasn’t been done. Would be so much nicer if gitlab/forgejo/gitea/… supported object storage for everything. Currently you always still need a filesystem for git repos.

11h agoHN ↗

It has been done. It is no longer done because it is not efficient.

Yes, it was not "object storage", but Git can be served from a dumb http server as static files. Now someone figured out that object storage can also serve static files via http. Wow!

3h agoHN ↗

Doesn’t Git store data in sparse files? My impression is that git’s on-disk layout is exactly the kind of thing you’d avoid on object storage. Interactions involve a ton of small reads, resulting in poor performance and enormous bills.

It only really makes sense to tarball repos into cold storage on S3 or Glacier, but short of GitLab cloud I suspect there aren’t enough repos cold enough to be worth the dev costs.

S3 that doesn’t have wild costs for git objects sounds like it’s just NFS

1h agoHN ↗

Git does not use sparse files no, however in packs objects are delta-ified: any object can be either literal or a combination of literal segments and range copies from a base object, and that base object can be the same, recursively. So to resolve any object you need to jump around a fair bit in the pack file. The normal GC creates delta chain of length 10, aggressive defaults to 50, the maximum is 4095.

13h agoHN ↗

Next: replace whole-file hashes with a Merkle Patricia tree hash and enable BitTorrent-like distribution protocols on top, not to mention the deduplication advantages!

6h agoHN ↗

replace whole-file hashes

BLAKE3 has a whole mechanism for this, and as an added bonus it'd be substantially faster.

13h agoHN ↗

"Finally delta objects should be stored as their own object in the packfile instead of slapped onto the end of the object it’s a delta of so that you don’t have to read the object and its deltas to read the object in the first place."

Author thinks that delta encoding is there for no reason. Good luck, kid.

12h agoHN ↗

4th submission in 3 days. Is this a marketing spam campaign?

8h agoHN ↗

Which fonts are you seeing not looking good? It seems perfectly readable sans-serif and monospace wise, but could be system preferences on what fonts to use?

10h agoHN ↗

It seems like the kind of thing I would naturally post if I came across it, so a bunch of submissions over 3 days makes me think a bunch of people saw it and when they saw it said huh, I will submit to HN.

I think that makes more sense than some spam campaign for this.

8h agoHN ↗

I’m wondering how this is possible. Usually when you submit something that has been already posted recently, HN will upvote the existing post instead.

5h agoHN ↗

it depends on how much interest was shown, I've definitely posted things and then they get posted again less than 24 hours later and it is that second post that takes off.

10h agoHN ↗

`git update-server-info` is your friend; it generates the auxiliary files needed to allow clients to make range requests against packs.

For example: https://andrewaylett.github.io/rgitweb/ is a repository viewer that runs against a static git repo. It doesn't care what you're storing the pack in, just that the data is there to make the right range requests.

10h agoHN ↗

I recently found https://github.com/enroute-sh/enroute which also does git on object storage

I found the idea of a git-proxy interesting where you start with proxying an existing forge and then later adopt the object storage backend

6h agoHN ↗

Oh this is exactly what I need, fantastic! Thanks for sharing.

2h agoHN ↗

This seems incredible and I love the idea. Anyone using this for large projects? Any clear downsides or tradeoffs?

2h agoHN ↗

Not that I know of as I don't have a way track this. I did test importing and mirroring everything for Ghostty and Meshtastic projects, found out that initial import and push steps may take a while.

Great to have issues, PRs, etc in git, but requires each participant to set up a fork to participate.

No CI though, but an extension to capture job logs is on the roadmap.

52m agoHN ↗

Radicule does something similar. Also git-bug.

1h agoHN ↗

Do you have any benchmark data you can share?

What you are saying sounds like an assertion that the problem described here[1] - by Vicent Marti - that packfiles aren't contiguous blocks of data and so every fetch fans out to more fetches from the client - is not actually a problem? Or is there an innovation in zerofs that somehow solves this for git? From what I can see it offers NFS and NBD interfaces and GitHub tried and rejected both of those very early on.

The problem he described seems consistent with known patterns from datalake storage architectures, its a big part of why columnar storage is the only game in town for most use cases.

This is why TFA has a lot of interest here - he has changed the storage layout of git packfiles to a columnar model to address this challenge.

[1] https://cursor.com/blog/git-at-any-scale#git-without-packfil...