- publishing free software manuals
Version Management with CVS - the CVS manual
by Per Cederqvist et al.
Paperback (6"x9"), 216 pages, 8 figures
ISBN 0954161718
RRP £19.95 ($29.95)

Get a printed copy>>>

H.2 Line formats

Line formats control how each line taken from an input file is output as part of a line group in if-then-else format.

For example, the following command outputs text with a one-column change indicator to the left of the text. The first column of output is ‘-’ for deleted lines, ‘|’ for added lines, and a space for unchanged lines. The formats contain newline characters where newlines are desired on output.

cvs diff \
' \
' \
   --unchanged-line-format=' %l
' \

To specify a line format, use one of the following options. You should quote format, since it often contains shell metacharacters.

formats lines just from the first file.
formats lines just from the second file.
formats lines common to both files.
formats all lines; in effect, it sets all three above options simultaneously.

In a line format, ordinary characters represent themselves; conversion specifications start with ‘%’ and have one of the following forms.

stands for the contents of the line, not counting its trailing newline (if any). This format ignores whether the line is incomplete.
stands for the contents of the line, including its trailing newline (if any). If a line is incomplete, this format preserves its incompleteness.
stands for ‘%’.
where C is a single character, stands for C. C may not be a backslash or an apostrophe. For example, ‘%c':'’ stands for a colon.
where O is a string of 1, 2, or 3 octal digits, stands for the character with octal code O. For example, ‘%c'\0'’ stands for a null character.
where F is a printf conversion specification, stands for the line number formatted with F. For example, ‘%.5dn’ prints the line number using the printf format "%.5d". See section H.1 Line group formats, for more about printf conversion specifications.

The default line format is ‘%l’ followed by a newline character.

If the input contains tab characters and it is important that they line up on output, you should ensure that ‘%l’ or ‘%L’ in a line format is just after a tab stop (e.g. by preceding ‘%l’ or ‘%L’ with a tab character), or you should use the ‘-t’ or ‘--expand-tabs’ option.

Taken together, the line and line group formats let you specify many different formats. For example, the following command uses a format similar to diff's normal format. You can tailor this command to get fine control over diff's output.

cvs diff \
   --old-line-format='< %l
' \
   --new-line-format='> %l
' \
%<' \
%>' \
%>' \
   --unchanged-group-format=" \
ISBN 0954161718Version Management with CVS - the CVS manualSee the print edition