NHacker Next
  • new
  • past
  • show
  • ask
  • show
  • jobs
  • submit
Show HN: Browse GitHub repos in Emacs without cloning (github.com)
Pay08 8 hours ago [-]
Really neat. Out of curiosity, does this need to use the Github API? I hoped something like this could be done with plain http.
v9v 6 hours ago [-]
I use https://github.com/TxGVNN/github-explorer for this and even though it doesn't have a C-x C-f nicety (you just m-x github-explorer then type in the repo name) it works via http (or at least I don't recall giving it any API key or anything).
iLemming 8 hours ago [-]
Of course it needs to use the API. How are you otherwise read the private repos?
necovek 8 hours ago [-]
Authenticated HTTP or even SSH should allow it, especially if you are restricting to GH and know how their web URLs translate into git repo URLs.
iLemming 8 hours ago [-]
Ah, okay. I get now what the question meant. Sorry, it's past midnight here and my brain is ketchup. Git's own protocols let you talk to a remote repo without cloning it, so why not use that, right? Multiple reasons:

- Tree listing. There's no raw HTTP URL that gives you a directory listing. raw.githubblabla.com can't do directory indexes. You'd have to shell out to git ls-tree ... etc over the ssh, which means essentially implementing a partial git client.

- Getting subtries is also problematic

- Branch listing and repo search - no git protocol equivalent for those - need the API

- Current approach fetches the entire tree in one API call. Doing the same over pack protocol means negotiating a fetch, receiving packfile data and parsing it. Much heavier, much more code.

We can only imagine a world where git's transport layer gives you a browsable filesystem interface. It doesn't - git's protocols are optimized for syncing object graphs, not random-access file browsing.

iLemming 8 hours ago [-]
ayazumi 8 hours ago [-]
[dead]
Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact
Rendered at 13:14:58 GMT+0000 (Coordinated Universal Time) with Vercel.