
project_diff - show differences between two projects

project_diff [options] old_project new_project
old_project, new_project
project specs, either in the form "proj_vers"
or as four part objectname
Common options:
-D PATH | --database PATH database path
-H HOST | --host HOST engine host
-U NAME | --user NAME user name
-P STRING | --password STRING user's password
--ui_database_dir PATH path to copy database information to
Options:
-t | --terse terse diff listing (default)
-d | --diff produce diff listing like "diff -ur"
-p | --patch produce patch listing like "diff -urN"
-h | --hide hide contents of added/deleted subtrees (for --terse)
-r | --recursive recurse into sub projects

project_diff shows the differences between two projects in terms of the workarea paths of the projects' members. It does not need maintained workareas, though.
--terse listing (default)project_diff traverses both projects and outputs the differences in the following form:
a toolkit-1.0:project:1 2002-11-26 23:26:36 released b toolkit-darcy:project:1 2002-12-17 01:46:21 working ! toolkit/editor/sources/main.c main.c-1:csrc:2 main.c-2:csrc:2 + toolkit/guilib/includes/fonts.h fonts.h-1:incl:1 ! toolkit/guilib/makefile makefile-1:makefile:3 makefile-2:makefile:3 + toolkit/guilib/sources/fonts.c fonts.c-1:csrc:1 ! toolkit/misc/readme readme-1:ascii:1 readme-2:ascii:1
After the two header lines showing information about the projects, lines start with one of +, -, or !, followed by the workarea pathname of the object in the project, followed by additional information:
marks an object added in new_project, its objectname is given as additional info
marks an object deleted from old_project, its objectname is given as additional info
marks an object that has a different version in old_project and new_project, the objectnames are given as additional info
All objects in a added/deleted subtree are shown. This can be suppressed with option --hide which will only show the root of such a subtree.
--diff listingWith this option the output resembles that of diff -ur:
Only in a: vc/CMSynergy/Users.pm Only in a: vc/CMSynergy/users.pl --- a/vc/MANIFEST 2002-08-02 14:39:43.000000000 +0200 +++ b/vc/MANIFEST 2004-05-04 17:25:15.000000000 +0200 @@ -1,11 +1,32 @@ -CMSynergy.pm -CMSynergy/Users.pm +lib/VCS/CMSynergy.pm +lib/VCS/CMSynergy/Client.pm ... Only in b: vc/META.yml --- a/vc/Makefile.PL 2002-08-02 14:39:43.000000000 +0200 +++ b/vc/Makefile.PL 2004-05-03 13:35:10.000000000 +0200 @@ -1,16 +1,110 @@ use ExtUtils::MakeMaker; +use Config; +use strict; ...
Files that are only present in one project are indicated by "Only in a: ..." or "Only in b: ..." lines. Differences in directories (i.e. both objects are of cvtype "dir", but different versions) are not shown. An object that changes cvtype from "dir" to non-"dir" or vice versa is indicated by a line of the form:
File a/foo is a regular file while file b/foo is a directory
Note that --diff implies --hide (the top of a added/deleted subtree is still indicated by a "Only in ..." line).
--patch listingWith this option the output resembles that of diff -urN. This is the same as --diff output except that "absent" objects are treated as empty files and added/deleted subtrees are not hidden. This listing is suitable to "patch up" a checked out old_project to a copy of new_project with the command:
patch -p1 -E < project.patch

-r, --recursiveTraverse also subprojects.
-h, --hideHide added/deleted subtrees in --terse output format.
See "GetOptions" in VCS::CMSynergy::Helper.

Exit status is 0 if the projects are identical, 1 if some differences were found, 2 if some error occurred.

Roderich Schupp, argumentum GmbH <schupp@argumentum.de>