{"id":517,"date":"2009-12-27T15:54:26","date_gmt":"2009-12-27T14:54:26","guid":{"rendered":"http:\/\/www.thomaskeller.biz\/blog\/?p=517"},"modified":"2010-01-15T12:43:54","modified_gmt":"2010-01-15T11:43:54","slug":"monotone-automate-stdio-overhauled","status":"publish","type":"post","link":"https:\/\/www.thomaskeller.biz\/blog\/2009\/12\/27\/monotone-automate-stdio-overhauled\/","title":{"rendered":"monotone automate stdio overhauled [Update]"},"content":{"rendered":"<p>Yesterday my &#8220;automate-out-of-band&#8221; branch finally made it into monotone&#8217;s trunk. This is a prerequisite for the support of netsync commands in guitone I&#8217;ve blogged about <a href=\"http:\/\/www.thomaskeller.biz\/blog\/2009\/10\/19\/monotone-guitone-update\/\">earlier<\/a>, as it makes in-stream informational, error and ticker messages possible, even for remote connections! <\/p>\n<p>While I was at it, several other small things have been changed in stdio &#8211; f.e. the error code is now only issued once as payload of the &#8216;l&#8217; stream-, which mean unfortunately that monotone 0.46 will break compatibility with clients which only understand the pre-0.46 output format. To avoid another hard break like this in the future, a new header section has been added to both stdio&#8217;s and the first header which is issued there is the &#8220;format-version&#8221; header:<\/p>\n<pre>\r\n$ mtn au stdio\r\nformat-version: 2\r\n\r\n[...actual output...]\r\n<\/pre>\n<p>`stdio-version` is promised to stay constant as long as the output format doesn&#8217;t change and will be incremented by &#8216;1&#8217; if there is any other major dealbreaker in the future. This is actually different from the `interface_version` number we also have in the automate interface, whose major number will raise everytime an incompatible change is made to <em>any<\/em> automate command. We&#8217;ll possibly change this behaviour to something more client-friendly in the future, but there is no ETA on this yet, as the current system is still good enough.<\/p>\n<p>All changes for (remote) stdio will be clearly documented in the manual once 0.46 is out. Before this release happens though, I plan to finish the &#8220;automate-netsync&#8221; branch as well&#8230; Holiday time is hacking time \ud83d\ude42<\/p>\n<p><strong>[Update:<\/strong> It was decided to name the version header &#8220;format-version&#8221; instead of &#8220;stdio-version&#8221;; I&#8217;ve updated my example accordingly<strong>]<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Yesterday my &#8220;automate-out-of-band&#8221; branch finally made it into monotone&#8217;s trunk. This is a prerequisite for the support of netsync commands in guitone I&#8217;ve blogged about earlier, as it makes in-stream informational, error and ticker messages possible, even for remote connections! While I was at it, several other small things have been changed in stdio &#8211; &hellip; <a href=\"https:\/\/www.thomaskeller.biz\/blog\/2009\/12\/27\/monotone-automate-stdio-overhauled\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">monotone automate stdio overhauled [Update]<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-517","post","type-post","status-publish","format-standard","hentry","category-monotone"],"_links":{"self":[{"href":"https:\/\/www.thomaskeller.biz\/blog\/wp-json\/wp\/v2\/posts\/517","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.thomaskeller.biz\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.thomaskeller.biz\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.thomaskeller.biz\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.thomaskeller.biz\/blog\/wp-json\/wp\/v2\/comments?post=517"}],"version-history":[{"count":5,"href":"https:\/\/www.thomaskeller.biz\/blog\/wp-json\/wp\/v2\/posts\/517\/revisions"}],"predecessor-version":[{"id":521,"href":"https:\/\/www.thomaskeller.biz\/blog\/wp-json\/wp\/v2\/posts\/517\/revisions\/521"}],"wp:attachment":[{"href":"https:\/\/www.thomaskeller.biz\/blog\/wp-json\/wp\/v2\/media?parent=517"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.thomaskeller.biz\/blog\/wp-json\/wp\/v2\/categories?post=517"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.thomaskeller.biz\/blog\/wp-json\/wp\/v2\/tags?post=517"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}