The unified diff between revisions [8032bf83..] and [220e18d5..] is displayed below. It can also be downloaded as a raw diff.

#
#
# patch "monotone.texi"
#  from [4b08a6efa1905ac80420a2167bc874c5b9ed8ca1]
#    to [fa1738710d397b1262e70e512619f71f90157abf]
#
# patch "netsync.cc"
#  from [340e432145bad814c7757dfa04769449745b791f]
#    to [2302612f5e4d92846a2ec32a842efb077f09384d]
#
============================================================
--- monotone.texi	4b08a6efa1905ac80420a2167bc874c5b9ed8ca1
+++ monotone.texi	fa1738710d397b1262e70e512619f71f90157abf
@@ -7525,6 +7525,103 @@ @section Automation

 @end table

+
+@item mtn automate pull [--set-default] [@var{uri-or-address}] [@var{glob} [...] [--exclude=@var{exclude-glob}]]] [--do-not-enforce-ssh-agent]
+@itemx mtn automate push [--set-default] [@var{uri-or-address}] [@var{glob} [...] [--exclude=@var{exclude-glob}]]] [--do-not-enforce-ssh-agent] [--key-to-push=@var{key-id}]
+@itemx mtn automate sync [--set-default] [@var{uri-or-address}] [@var{glob} [...] [--exclude=@var{exclude-glob}]]] [--do-not-enforce-ssh-agent] [--key-to-push=@var{key-id}]
+
+@table @strong
+@item Arguments:
+
+The automate versions of pull, push and sync have a superset of arguments and
+options compared to the non-automate versions. For an explanation of these
+common parts please check this manual in the appropriate section.
+
+Furthermore, you can define @option{--do-not-enforce-ssh-agent} which make
+these commands not using a running ssh agent instance explicitely. The setting
+of this option is highly discouraged if you run the command from inside stdio,
+because it might break your output in case a password is needed to decrypt a
+user key and no get_passphrase() lua hook has been set up.
+
+@item Added in:
+
+8.0
+
+@item Purpose:
+
+Pushes, pulls or syncs (push & pull) revisions, certificates and keys from
+the given database to / from / with to another (foreign) one. A running
+ssh-agent instance is required and the key which is used for signing /
+authentication has to be loaded into ssh-agent beforehand.
+
+@item Sample output (stdio):
+
+The following output shows an example of a pull which transferred two revisions
+and eight certs.
+
+@emph{Note:} The linebreaks are not part of the actual format.
+
+@verbatim
+0:0:p:62:doing anonymous pull; use -kKEYNAME if you need authentication
+0:0:p:25:connecting to monotone.ca0:0:p:29:finding items to synchronize:
+0:0:t:34:c:certificates;k:keys;r:revisions;
+0:0:t:12:c=0;k=0;r=0;
+0:0:t:13:c#0;k#0;r#64;
+0:0:t:14:c#0;k#0;r#128;
+[...]
+0:0:t:6:c;k;r;
+0:0:t:44:>:bytes in;<:bytes out;c:certs in;r:revs in;
+0:0:t:16:>=0;<=0;c=0;r=0;
+0:0:t:21:>#420;<#1344;c#0;r#0;
+0:0:t:22:>#1165;<#1741;c#0;r#0;
+[...]
+0:0:t:24:>#20839;<#14882;c#0;r#1;
+0:0:t:24:>#20839;<#14882;c#3;r#1;
+0:0:t:24:>#20839;<#14882;c#4;r#2;
+0:0:t:24:>#20839;<#14882;c#6;r#2;
+0:0:t:24:>#20863;<#14930;c#8;r#2;
+0:0:t:8:<;>;c;r;
+0:0:p:36:successful exchange with monotone.ca
+0:0:l:0:
+@end verbatim
+
+@item Output format:
+
+Netsync commands output info and ticker messages just like the normal netsync
+commands do.
+
+If these commands are run over stdio, the stdio ticker format is used
+(for a description of this format, check @command{automate stdio}).
+
+The following ticker types are printed out during the refinement phase:
+
+@itemize
+@item 'c': The amount of certs found for an upcoming synchronization
+@item 'k': The amount of keys found for an upcoming synchronization
+@item 'r': The amount of revisions found for an upcoming synchronization
+@end itemize
+
+After refinement the actual synchronization between the two nodes start. The
+ticker stanzas in this phase are the following:
+
+@itemize
+@item '>': number of incoming bytes
+@item '<': number of outgoing bytes
+@item 'c': number of incoming certs  (only pull and sync)
+@item 'C': number of outgoing certs  (only push and sync)
+@item 'r': number of incoming revisions  (only pull and sync)
+@item 'R': number of outgoing revisions  (only push and sync)
+@end itemize
+
+@item Error conditions:
+
+If no ssh-agent instance is running, the signing key hasn't been loaded into
+a running ssh-agent instance or a netsync error occurs, the command outputs
+an error and exits with status 1.
+
+@end table
+
+
 @item mtn automate get_current_revision [--exclude @var{excl}] [--depth=@var{depth}] [@var{path} ...]

 @table @strong
============================================================
--- netsync.cc	340e432145bad814c7757dfa04769449745b791f
+++ netsync.cc	2302612f5e4d92846a2ec32a842efb077f09384d
@@ -2498,6 +2498,9 @@ call_server(options & opts,
           // Commit whatever work we managed to accomplish anyways.
           guard.commit();

+          // ensure that the tickers have finished and write any last ticks
+          ui.ensure_clean_line();
+
           // We had an I/O error. We must decide if this represents a
           // user-reported error or a clean disconnect. See protocol
           // state diagram in session::process_bye_cmd.