git/list[1] front-page[2] threads[3] people[4] search[5] about
 

More on git over HTTP POST

From
HAH. Peter Anvin <hpa@zytor.com>
Date
Aug 1, 2008, 21:50 UTC
Message-ID
<48938539.9060003@zytor.com>
Hi all,

I have investigated a bit what it would take to support git protocol (smart transport) over HTTP POST transactions.

The current proxy system is broken, for a very simple reason: it doesn't convey information about when the channel should be turned around.

HTTP POST -- or, for that matter, any RPC-style transport, is a half duplex transport: only one direction can be active at a time, after which the channel has to be explicitly turned around. The "turning around" consists of posting the queued transaction and listening for the reply.

Ultimately, it comes down to the following: the transactor needs to be given explicit information when the git protocol goes from writing to reading (the opposite direction information is obvious.) I was hoping that it would be possible to get this information from snooping the protocol, but it doesn't seem to be so lucky.

I started to hack on a variant which would embed a VFS-style interface in git itself, looking something like:

struct transactor;
struct transact_ops {
	ssize_t (*read)(struct transactor *, void *, size_t);
	ssize_t (*write)(struct transactor *, const void *, size_t);
	int (*close)(struct transactor *);
};
struct transactor {
	union {
		void *p;
		intptr_t i;
	} u;
	const struct transact_ops *ops;
};

Replacing the usual fd operations with this interface would allow a different transactor to see the phase changes explicitly; the replacement to use xread() and xwrite() is obvious.

Of course, I started hacking on it and found myself with zero time to continue, but I thought I'd post what I had come up with.

	-hpa
Next: Shawn O. Pearce
Message 1 of 40 in “More on git over HTTP POST”
  1. H. Peter AnvinAug 1, 2008
  2. Shawn O. PearceAug 2, 2008
  3. Daniel StenbergAug 2, 2008
  4. Shawn O. PearceAug 2, 2008
  5. Petr BaudisAug 2, 2008
  6. Shawn O. PearceAug 2, 2008
  7. Shawn O. PearceAug 3, 2008
  8. Junio C HamanoAug 3, 2008
  9. Shawn O. PearceAug 3, 2008
  10. H. Peter AnvinAug 3, 2008
  11. Shawn O. PearceAug 3, 2008
  12. david@lang.hmAug 3, 2008
  13. H. Peter AnvinAug 3, 2008
  14. H. Peter AnvinAug 3, 2008
  15. H. Peter AnvinAug 3, 2008
  16. Shawn O. PearceAug 3, 2008
  17. H. Peter AnvinAug 3, 2008
  18. H. Peter AnvinAug 3, 2008
  19. Mike HommeyAug 3, 2008
  20. 1/2 Add backdoor options to receive-pack for use in Git-aware CGIShawn O. Pearce, Aug 3, 2008
  21. 2/2 Add Git-aware CGI for Git-aware smart HTTP transportShawn O. Pearce, Aug 3, 2008
  22. H. Peter AnvinAug 3, 2008
  23. Shawn O. PearceAug 3, 2008
  24. Junio C HamanoAug 3, 2008
  25. Shawn O. PearceAug 4, 2008
  26. Rogan DawesAug 4, 2008
  27. Johannes SchindelinAug 4, 2008
  28. Rogan DawesAug 4, 2008
  29. Johannes SchindelinAug 4, 2008
  30. Shawn O. PearceAug 4, 2008
  31. Rogan DawesAug 4, 2008
  32. Shawn O. PearceAug 4, 2008
  33. Rogan DawesAug 4, 2008
  34. H. Peter AnvinAug 5, 2008
  35. Shawn O. PearceAug 5, 2008
  36. H. Peter AnvinAug 5, 2008
  37. Shawn O. PearceAug 5, 2008
  38. H. Peter AnvinAug 5, 2008
  39. Add Git-aware CGI for Git-aware smart HTTP transportH. Peter Anvin, Aug 13, 2008
  40. Shawn O. PearceAug 13, 2008

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.