From: McMullan, Jason Date: Thu, 02 Jun 2005 12:54:42 GMT Subject: cg-push protocol proposal Message-ID: <1117716883.32257.42.camel@jmcmullan.timesys> I'd like to propose the following protocol for 'pushes'. Assume that a 'git-daemon' is the 'server', and is talking on stdin/stdout. Each command is an ascii string, followed by a LF (\n) Request current head ID: head \n Responses: head \n error \n Request a SHA1 blob from the server send \n Responses: send \n error \n Update head ID to a SHA1 (the SHA1 may already be in the server's DB) head \n 1) Response if is now : head \n Response if error, or head locked by someone else updating: error \n Response if is not in the database: send \n - Server needs the blob 2) Client response if 'send' is returned: send \n 3) Response if more objects are needed (ie you sent a commit or tree object) send \n - Server needs blob Remember the SHA1 you sent, 'call' step 2) with new-sha1 Goto 3) Response if send succeeded: exists \n Response if send failed: error \n TODO: Tags -- Jason McMullan TimeSys Corporation