On Sat, Aug 28, 2021 at 02:56:17PM +0200, Stef Bon wrote: > I've got a custom ssh library which I use to make a connection to a > git server like www.github.com, user stefbon. > > Now I want to get the direntries of a remote repo, and I know I have > to use upload-pack for that, but with what parameters? > > I want to use the outcome to make a fuse fs, user can browse the > files. Possibly the user can also view the contents. The protocol used by upload-pack is described in Documentation/technical/pack-protocol.txt, but in short: I don't think it will do what you want. There is no operation to list the tree contents, for example, nor really even a good way to fetch a single object. The protocol is geared around efficiently transferring slices of history, so it is looking at sets of reachable objects (what the client is asking for, and what it claims to have). You might be able to cobble something together with shallow and partial fetches. E.g., something like: git clone --depth 1 --filter=blob:none --single-branch -b $branch is basically asking to send only a single commit, plus all of its trees, but no blobs. From there you could parse the tree objects to assemble a directory listing. Possibly with a tree:depth filter you could even do it iteratively. Some hosts offer a separate API that would give you a much nicer interface. E.g., GitHub has: https://docs.github.com/en/rest/reference/git#trees But of course that won't work with GitLab, etc, and you'd have to implement against the API for each hosting provider. -Peff