dumb HTTP things I want to do
- From
- Eric Wong <e@80x24.org>
- Date
- May 14, 2019, 12:13 UTC
- Message-ID
- <20190514121350.jugxtegpvcxr4vjs@dcvr>
- In-Reply-To
- <20190514115047.oncvfq24fhnp64re@dcvr>
Eric Wong <e@80x24.org> wrote:
Show 7 quoted lines
> Jeff King <peff@peff.net> wrote: > > That's my reading, too, but I didn't want to be responsible for > > regressing some obscure case. At least Eric seems to _use_ > > update-server-info. ;) > > I also have something else on my mind for abusing info files with :> > (another email)
I'm not sure when/if I'll have time for this; but this ought to be possible:
GIT_DIR=$HTTP_URL git <any read-only command>
And possible without existing admins to setup or change anything on their server.
Right now, I could do it by setting up a WebDAV server and using fusedav[1] on the client.
But, not everybody runs a WebDAV server which allows PROPFIND for listing files... However, info/refs and objects/info/packs can give us all the info we need without needing PROPFIND. All we'd need is the common GET/HEAD HTTP methods for read-only access.
git doesn't need mmap; and curl + Range requests ought to be able to get us what we need to emulate pread. It'd be great for low-latency LANs, maybe not so great with high latency; but probably better in many cases than cloning a giant repo to cat one blob.
Also, cloning on a static bundle ought to be doable with:
git clone $REMOTE_OR_LOCAL_PATH/foo.bundle
And yeah, it also sucks that bundles double storage overhead for admins; it would be nice if I could use bundles as alternates or packs...
Anyways, all of this is probably a lot of work and I don't hack much, anymore.
[1] I have many patches for fusedav, and the debian maintainer
seems dead, and upstream's moved on: https://bugs.debian.org/fusedav
davfs2 can't do Range requests, so it won't work for big repos...