- Unix Commands Reference
- Unix Commands - Home
gendiff - Unix, Linux Command
NAME
gendiff - utility to aid in error-free diff file generationSYNOPSIS
gendiff <directory> <diff-extension>DESCRIPTION
gendiff is a rather simple script which aids in generating a diff file from a single directory. It takes a directory name and a "diff-extension" as its only arguments. The diff extension should be a unique sequence of characters added to the end of all original, unmodified files. The output of the program is a diff file which may be applied with the patch program to recreate the changes.The usual sequence of events for creating a diff is to create two identical directories, make changes in one directory, and then use the diff utility to create a list of differences between the two. Using gendiff eliminates the need for the extra, original and unmodified directory copy. Instead, only the individual files that are modified need to be saved.
Before editing a file, copy the file, appending the extension you have chosen to the filename. I.e. if you were going to edit somefile.cpp and have chosen the extension "fix", copy it to somefile.cpp.fix before editing it. Then edit the first copy (somefile.cpp).
After editing all the files you need to edit in this fashion, enter the directory one level above where your source code resides, and then type
$ gendiff somedirectory .fix > mydiff-fix.patch |
You should redirect the output to a file (as illustrated) unless you want to
see the results on stdout.
EXAMPLES
Consider two files, Original file, HelloWorld.c.orig and modified file, Original file: HelloWorld.c
HelloWorld.c.orig
#includeint main() { printf("Hello World...!\n"); }
HelloWorld.c
#includeint main() { char *msg = "Hello World...!\n"; printf(msg); }
Step 1 - Create patch file
$ gendiff `pwd` .orig > HellWorld.c.patch
Step 2 - Examine the patch file
$ cat HellWorld.c.patch diff -up /home/HellWorld.c.orig /home/HellWorld.c --- /home/HellWorld.c.orig 2016-02-06 13:05:59.000000000 +0530 +++ /home/HellWorld.c 2016-02-06 13:06:26.000000000 +0530 @@ -2,5 +2,6 @@ int main() { - printf("Hello World...!\n"); + char *msg = "Hello World...!\n"; + printf(msg); }
The unchanged lines in file are indented with space. New lines are indicated with "+" and lines deleted are indicated with "-"
Step 3 - Apply the patch to original file
$ mv HelloWorld.c.orig HelloWorld.c $ patch HellWorld.c HellWorld.c.patch