Compares versions of a text-file element or a directory
ClearCase (cleartool subcommand), Attache (command)
The diff command calls an element-type-specific program (the compare method for the type) to compare the contents of two or more file elements, or two or more directory elements. Typically, the files are versions of the same file element.
You can also use this command to compare ordinary text files.
diff uses the ClearCase type manager mechanism to determine how to compare the specified objects. For more information, see the type_manager reference page.
The diff command compares the contents of two or more file elements or two or more directory elements. Typically, the files are versions of the same file element. For a file diff, any locally-referenced files are used as contributors; any nonlocal files are downloaded temporarily. diff presumes that all files are text files, using the built-in textual diff and merge compare methods, and bypassing the ClearCase type manager mechanism. For more information, see the type_manager reference page.
Each difference is reported as one or more pairwise differences. For example, if three contributors all differ from the base contributor in a particular section, diff lists the file1-file2 difference, followed by the file1-file3 difference, followed by the file1-file4 difference.
The default file-comparison report begins with a file summary, which lists all the input files and their assignments as file 1, file 2, and so on. If no differences are detected among the files, this listing is replaced by the message Files are identical.
The remainder of the report is a series of pairwise differences, each of which is preceded by a descriptive header line:
******************************** (file summary)
<<< file 1: util.c@@\main\1
>>> file 2: util.c@@\main\3
********************************
----------[after 15]-----|-------[inserted 16]------- (header)
-| char *s; (difference)
|-
---------[changed 18]----|-----[changed to 19-21]---- (header)
return ctime(&clock); | s = ctime(&clock); (difference)
-| s[ strlen(s)-1 ] = '\0';
| return s;
|-
The -quiet and -diff_format options suppress the file summary. The -headers_only option suppresses the differences, listing the header lines only.
Header Lines. Each header line indicates which text lines in the input files were changed, and how they were changed. The words describe the change in terms of how the first file was changed to produce the second file. Header lines can have the following formats, where each of A, B, and so on may be a single line number (for example, 46) or a range (for example, 256-290):
------------[after A]------------|------------[inserted B]-------------
Insertion of one or more lines. B indicates where the inserted lines occur in the second file. A indicates the corresponding point in the first file.
-----------[deleted C]-----------|--------------[after D]--------------
Deletion of one or more lines. C indicates which lines from the first file were deleted. D indicates the corresponding point in the second file.
--------[deleted/moved C]--------|----------[after D now B]-----------
Deletion of one or more lines from the first file, to which there corresponds an insertion of the same lines in the second file. Typically, this indicates that a range of lines was moved from one location to another; see inserted/moved below. C indicates where the lines were deleted from the first file; B indicates the location where these same lines were inserted in the second file. D indicates the point in the second file that corresponds to C.
-----------[changed X]-----------|------------[changed to Y]-----------
One or more lines changed in place. X indicates which lines in the first file were changed. Y indicates where the replacement lines occur in the second file.
----------[after A was C]--------|----------[inserted/moved B]--------
Insertion of one or more lines in the second file, to which there corresponds a deletion of the same lines from the second file. Typically, this indicates that a range of lines was moved from one location to another; see deleted/moved above. B indicates where the lines were inserted in the second file; C indicates where these same lines were deleted from the first file; A indicates the point in the first file that corresponds to B.
Differences. diff can report a difference in several ways. When comparing files, its default is to list corresponding lines side by side, and possibly truncated.
A plus sign (+) at the end of a difference line indicates that it has been truncated in the report. To see more of such lines, you can increase the report width using the -columns option. The minus signs (-) along the vertical separator line indicate the endpoints of the groups of differing lines. They help to distinguish empty lines in the input files from blank space in command output.
The -serial_format option causes the differences to be reported as entire lines, in above-and-below format instead of side-by-side format. For example:
-----[after 15 inserted 16]-----
> char *s;
-----[18 changed to 19-21]-----
< return ctime(&clock);
---
> s = ctime(&clock);
> s[ strlen(s)-1 ] = ' ';
> return s;
The -diff_format option causes both the headers and differences to be reported in the style of the UNIX diff utility, as illustrated in Figure 10.
Figure 10 UNIX-Style Difference Reporting
When diff compares multiple files, it adds file-identification annotations to the diff-style headers.
The -graphical option displays differences graphically.
For a comparison of directory versions, diff uses a directory-element-specific compare method, whose report format is very similar to the one described in Side-by-Side File Comparison Report Style.
A version of a VOB directory can contain several types of entries:
obj2 12-Aug.14:00 akp
NOTE: Multiple VOB hard links to the same element will have the same creator and creation time, but different names.
sub6\ 13-Aug.15:00 akp
doctn -> ..\vob1\doctn 13-Aug.08:44 akp
The diff report is a series of differences, each of which focuses on one directory entry. A difference can be a simple addition or deletion; it can also involve the renaming of an existing object, or the reuse of an existing name for another object. The following examples illustrate the various possibilities.
----------------------------------------|---------------[ added ]-------------
-| obj2 12-Aug.14:00 akp
An object named obj2 was added (mkelem, mkdir, or ln) in the second version of the directory.
---------------[ removed ]--------------|-----------------------------
obj5 12-Aug.14:00 akp |-
An object named obj5 was removed (rmname) in the second version of the directory.
---------------[ renamed ]--------------|--------[ renamed to ]-------
obj3 12-Aug.14:00 akp | obj3.new 12-Aug.14:00 akp
An object named obj3 was renamed (mv) to obj3.new in the second version of the directory.
-------------[ old object ]-------------|--------[ new object ]-------
obj4 12-Aug.14:04 akp | obj4 19-Oct.17:10 akp
In the second version of the directory, an object named obj4 was removed (rmname) and another object was created with that same name.
----------[ old link text ]-------------|------[ new link text ]----
doc -> ..\vob1\doc 13-Aug.08:44 akp | doc -> ..\vb\doc 19-Sep.21:01 akp
(Special case of the preceding example) In the second version of the directory, a VOB symbolic link named doc was removed (rmname) and another VOB symbolic link was created with that same name.
---------------[ renamed ]--------------|---[ renamed to ]------------
obj4 12-Aug.14:01 akp | obj1 12-Aug.14:01 akp
---------------[ removed ]--------------|-----------------------------
obj1 12-Aug.14:00 akp |-
These two differences show that in the second version of the directory, an object named obj1 was removed and another object was renamed from obj4 to obj1.
Permissions Checking: No special permissions required. Locks: No locks apply.
In ClearCase, with the exception of -predecessor and -options, diff options are the same as those of cleardiff.
REPORTING DIFFERENCES GRAPHICALLY. Default: Reports differences in nongraphical form and uses the default display font.
CONTRIBUTOR PANE STACKING. Default: Each of the two or more contributors being compared or merged is displayed in a separate subwindow, or contributor pane. By default, these panes are displayed, or stacked, horizontally (side by side), with the base contributor on the left.
OUTPUT FORMAT. Default: Reports differences in the format described in How Differences Are Reported.
COMPARISON OF A VERSION WITH ITS PREDECESSOR. Default: None.
(ATTACHE ONLY) SPECIFYING THE BASIS OF THE COMPARISON. Default: None.
PASSING THROUGH OPTIONS TO THE COMPARE METHOD. Default: Does not pass any special options to the underlying compare method (in ClearCase, typically, the cleardiff program).
-hea·ders_only | |
-headers_only lists only the header line of each difference. The differences themselves are omitted. -quiet suppresses the file summary from the beginning of the report. | |
-b·lank_ignore | |
Ignores extra white space characters in text lines: leading and trailing white space is ignored altogether; internal runs of white-space characters are treated like a single SPACE character. | |
SPECIFYING THE DATA TO BE COMPARED. Default: None.
Examples including wildcards or quoting are written for use in cleartool interactive mode. If you use cleartool single-command mode, you may need to change the wildcards and quoting to make your command interpreter process the command appropriately.
In cleartool single-command mode, cmd-context represents the command interpreter prompt. In cleartool interactive mode, cmd-context represents the interactive cleartool prompt. In Attache, cmd-context represents the workspace prompt.
cmd-context diff -view foo.c
cmd-context diff util.c Z:\jackson_hw\src\util.c
cmd-context diff util.c util.c\@@\main\1
cmd-context diff -predecessor foo.c
cmd-context diff hello.c hello.c@@\main\LATEST
cmd-context diff -predecessor msg.c \users\anne\msg.SAVE
cmd-context diff -graphical util.c util.c@@\main\rel2_bugfix\LATEST
cmd-context diff -graphical \users\jed\jed_ws\vob_des\source\test.c \users\jpb\my_proj\test_NEW.c
attache_command_line_interface, diffcr, merge, type_manager
|
Feedback on the documentation in this site? We welcome any comments!
Copyright © 1999 by Rational Software Corporation. All rights reserved. |