[I haven't actually compiled or tested this patch. It uses the tagged text features of the remote protocol in more cases. The biggest issue with making it official would be "is it needed?" and "would anyone use it?". I suppose we could also consider whether someone has a better solution. Example: Old responses (from server to client): M P foo.c M ? bar.c New responses: MT +patched MT text P MT fname foo.c MT -patched MT +questionable MT text ? MT fname bar.c MT -questionable One application: Have the client keep track of whether "cvs update" produced any conflicts, and then print "5 conflicts detected at the end." (if there is a lot of output, users may miss the conflict messages themselves). One little compatibility issue: the client would have no particularly good way to distinguish between a server which reports no conflicts and a server which doesn't support the +conflict tag. This is kind of bad, in the sense that it may lead to users thinking there are no conflicts when there are some, on the other hand I'm not sure I think it is worth worrying about. -kingdon] From: Jim Kingdon Date: 7 Jan 1998 Index: doc/ChangeLog =================================================================== RCS file: /home2/cvsroot/ccvs/doc/ChangeLog,v retrieving revision 1.487 diff -c -r1.487 ChangeLog *** ChangeLog 1998/01/01 22:41:24 1.487 --- ChangeLog 1998/01/07 17:45:54 *************** *** 1,3 **** --- 1,8 ---- + Wed Jan 7 12:45:32 1998 Jim Kingdon + + * cvsclient.texi (Text tags): Add new tags for "P foo.c", "? + foo.c", and so on. + Thu Jan 1 17:36:42 1998 Jim Kingdon * cvs.texinfo (BUGS, Credits): Change @unnumbered to @appendix now Index: doc/cvsclient.texi =================================================================== RCS file: /home2/cvsroot/ccvs/doc/cvsclient.texi,v retrieving revision 1.98 diff -c -r1.98 cvsclient.texi *** cvsclient.texi 1997/12/22 08:57:26 1.98 --- cvsclient.texi 1998/01/07 17:45:11 *************** *** 1496,1501 **** --- 1496,1567 ---- MT -updated @end example + The following tag means to indicate to the user that a file has been + patched. It is more or less redundant with the @code{Rcs-diff} + response. Note that just because the dichotomy between @code{+updated} + and @code{+patched} is traditional, it isn't necessarily the best way to + break things down for the user. For example, it might make more sense + for one category to be @code{Rcs-diff} and @code{Update-existing} and + the other category to be @code{Created}, or it might make more sense to + treat @code{+updated} and @code{+patched} the same. + + @example + MT +patched + MT fname @var{name} + MT -patched + @end example + + The following tag is used for the reply to a @code{Questionable} + request. + + @example + MT +questionable + MT fname @var{name} + MT -questionable + @end example + + The following tag means that a file had conflicts. Typically a + @code{Merged} response will produce either @code{+local-mod} or + @code{+conflict} although @code{+conflict} may also be used for other + cases. + + @example + MT +conflict + MT fname @var{name} + MT -conflict + @end example + + The following tag means that a file has been locally modified in the + working directory. The client could deduce this itself in some, but + probably not all, cases without contacting the server. The tag is also + used if there was a merge without conflicts. + + @example + MT +local-mod + MT fname @var{name} + MT -local-mod + @end example + + The following tag means that a file has been locally added in the + working directory. The client could deduce this itself if it chose, + without contacting the server. + + @example + MT +local-add + MT fname @var{name} + MT -local-add + @end example + + The following tag means that a file has been locally removed in the + working directory. The client could deduce this itself if it chose, + without contacting the server. + + @example + MT +local-remove + MT fname @var{name} + MT -local-remove + @end example + @node Example @section Example Index: src/ChangeLog =================================================================== RCS file: /home2/cvsroot/ccvs/src/ChangeLog,v retrieving revision 1.1387 diff -c -r1.1387 ChangeLog *** ChangeLog 1998/01/07 03:57:32 1.1387 --- ChangeLog 1998/01/07 17:27:37 *************** *** 1,3 **** --- 1,8 ---- + Wed Jan 7 12:24:22 1998 Jim Kingdon + + * update.c (write_letter): Also tag output for letters other than + "U". + Tue Jan 6 22:56:29 1998 Jim Kingdon * sanity.sh (crerepos): Fix mistaken variable name which caused us Index: src/update.c =================================================================== RCS file: /home2/cvsroot/ccvs/src/update.c,v retrieving revision 1.140 diff -c -r1.140 update.c *** update.c 1997/12/27 18:57:10 1.140 --- update.c 1998/01/07 17:26:30 *************** *** 1581,1588 **** case 'U': tag = "updated"; break; default: ! /* We don't yet support tagged output except for "U". */ break; } --- 1581,1608 ---- case 'U': tag = "updated"; break; + case 'P': + tag = "patched"; + break; + case '?': + tag = "questionable"; + break; + case 'C': + tag = "conflict"; + break; + case 'M': + tag = "local-mod"; + break; + case 'A': + tag = "local-add"; + break; + case 'R': + tag = "local-remove"; + break; default: ! /* If we add new letters, we presumably want to add new ! tags too. */ ! assert (0); break; }