The very short answer is diff -u
or
better, cvs diff -u
and in either case you should
then inspect the resulting patch file to insure that it is what
you expect and manually remove any changes which should not be
part of the submitted patch. For people not using GNU diff,
-u and -N may not work, use -c for context diffs, and
diff /dev/null filename to generate a diff to
create a file
.
If you have made changes in a cvs checkout just type
cvs diff -Nu package-dir > patch-file
in the package /web/openacs-4/package directory to generate
the patch (see below if you have also added files).
If you are working from code that is not a cvs checkout (definitely less desirable, see below) then you should type either:
diff -u package-dir/.../old-file package-dir/.../new-file > patch-file
or if you have modified more than one file you might want to do
diff -rNu old-package-dir new-package-dir > patch-file
which will do a recursive context diff of the old directory versus the
new directory (the -r
flag) and generate patches which
will create new files if you have added files (the -N
flag).
We prefer patches be generated from the top-level directory of the package so that it is clear from the patch where the file belongs.
The -N
flag will generate a chunk in the patch file
to create any new files you have added but please be careful
that the files that will created really should be part of the
patch. It is easy to have editor backup file and others show up
(although cvs diff generally does not have this problem).
Try to avoid reformatting large blocks of code unless absolutely necessary. It is quite important that the changes be as small as possible so the the patch maintainer can inspect the patch quickly and apply it if needed.
If you have cvs commit and are going to commit your changes but
want to produce a diff for documentation purposes you should
cvs add
any new files you have made first so that
cvs diff will produce a diff which will create the new files.
If you are working from an anonymous checkout you should do the
following to add diffs for new files to the patch file:
diff -u /dev/null package-dir/.../new-file >> patch-file
In an ideal world you would do a checkout from the head, make
your changes, test them, and submit a cvs diff
as
above. If you are unwilling to do so, a diff based patch is
still useful to the project but is less likely to be applied
as quickly (if at all). Posting entire changed files is almost
useless since it is difficult and time consuming to find
what you have changed and such postings are entirely likely
to be rejected outright.
if you have new files to add to your patch, add them to the
patch file via:
diff -u /dev/null new-file >> patch-file