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

[PATCH 0/3] use constants for sideband communication channels

From
iheffner@gmail.com <iheffner@gmail.com>
Date
Dec 13, 2011, 18:28 UTC
Message-ID
<1323800931-37123-1-git-send-email-iheffner@gmail.com>

In order to make more clear how the different channels in sidechannel.c are to be used, I'm proposing some macros/constants which can be used in place of the "magic numbers" that mean little or nothing to someone not familiar with the protocol.

In working on a script to handle archiving from a bare repository a project which contained submodules, I had a difficult time determining how to talk between my git-upload-archive replacement and git-archive. It did not occur to me to look at documentation for git-send-pack or git-receive-pack when trying to understand the communication protocol. But looking through the code and poking at an implementation, I finally understood that I needed to send a channel identifier to say what type of communication I was sending. I determined that there were three possible channels. I could easily tell that channel three (3) was for catastrophic errors on the server side. But it was not clear what the difference between channel 1 and channel 2 were. Because channel 2 was the one that appeared to be read and parsed in some manner, I assumed that this was the "important" data channel and tried sending my data on that channel.

I was confused and frustrated when it appeared that git-archive treated data coming from my --exec'd git-upload-archive replacement differently than it did when receiving data from the real git-upload-archive. Eventually I figured out that channel 1 was for data, channel 2 was for non-fatal messages, and channel 3 was for fatal error communications. Having comments in sidechannel.h would have helped. But constants or macros would have helped as well and makes the code that uses them more clear.

Ivan
 [PATCH 1/3] add constants for sideband communication channels
 [PATCH 2/3] switch sideband communication to use constants
 [PATCH 3/3] use SIDEBAND_*_ERROR constants in pack protocol
 builtin/fetch-pack.c     |    2 +-
 builtin/receive-pack.c   |    6 +++---
 builtin/send-pack.c      |    4 ++--
 builtin/upload-archive.c |    6 +++---
 sideband.c               |    6 +++---
 sideband.h               |    6 +++++-
 upload-pack.c            |   22 +++++++++++-----------
 7 files changed, 28 insertions(+), 24 deletions(-)
Next: iheffner@gmail.com
Message 1 of 5 in “use constants for sideband communication channels”
  1. 0/3 use constants for sideband communication channelsiheffner@gmail.com, Dec 13, 2011
  2. 1/3 add constants for sideband communication channelsiheffner@gmail.com, Dec 13, 2011
  3. 2/3 switch sideband communication to use constantsiheffner@gmail.com, Dec 13, 2011
  4. 3/3 use SIDEBAND_*_ERROR constants in pack protocoliheffner@gmail.com, Dec 13, 2011
  5. Junio C HamanoDec 14, 2011

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.