My favorites | Sign in
Project Logo
                
New issue | Search
for
| Advanced search | Search tips
Issue 21: Recursive directory diff support
8 people starred this issue and may be notified of changes. Back to list
Status:  Accepted
Owner:  josh.macdonald
Type-Enhancement
Priority-Medium


Sign in to add a comment
 
Reported by josh.macdonald, Feb 05, 2007
This is a frequently-requested feature. In particular, it's an RTPatch
feature. This will probably require some Unix/Win-specific code.
Comment 1 by malayter, Feb 05, 2007
gzip 1.3.5 seems to handle this well on both POSIX and Windows platforms, and is of 
course GPL2 licensed. I'm not sure how much gnuwin32 replaces the baseline Gnu code, 
though, or how modularized it really is. My C skills are caked with 10 years of rust.

Just thought I'd throw it out as an example, anwyay.
Comment 2 by dotdotisdead, Feb 08, 2007
It's not exactly the same, but SVN 125 (after release 3.0o) has a new environment
variable for use with tar:

export XDELTA
XDELTA="-s source-1.tar"
TAR="tar --use-compress-program=xdelta3"
$TAR -cvf source-1-source2.tar.vcdiff source-2/
...
$TAR -xvf source-1-source2.tar.vcdiff

Comment 3 by ejewel, Jun 18, 2007
Attached is the perl script I use to achieve this functionality.  If anyone is
interested I also have a version that works with xdelta 1.1.x.
xdelta-dir
4.2 KB   Download
Comment 4 by rwstorer, Aug 04, 2007
Josh, this is pretty cool software.  I really could use the directory diff though as
I am adding directories and files in them from version to version.  That, of course,
causes my tar/zip files to be pretty different, and I usually only save about fifteen
megs in a 260mb file.  Anyway, thanks for the program, and I'd be happy to beta test
on the Windows side if you choose to get this directory diff thing going.
Comment 5 by josh.macdonald, Dec 14, 2007
(No comment was entered for this change.)
Labels: -Type-Defect Type-Enhancement Milestone-Release3.0
Comment 6 by josh.macdonald, Dec 14, 2007
(No comment was entered for this change.)
Labels: -Milestone-Release3.0
Comment 7 by j.scruggs, Jul 04, 2008
I'm not sure I understand the tar method fully. Can someone give a full example,
let's say, comparing D:\Dir1 against D:\Dir2 and then also how to apply that diff as
well? Both xdelta and tar need to be in the temp dir. I would like to make this part
of an update installation.

Thanks
Comment 8 by ejewel, Feb 24, 2009
Attached is a new version of xdelta-dir.  It fixes an issue with recursive directory
handling.
xdelta-dir
4.4 KB   Download
Comment 9 by blaze...@libero.it, Mar 16, 2009
That's my modifications made to the script, since it's in GPL I'm posting here for
anyone to see and use, if they find it useful...
I've fixed some hangups if one dir was present in one file but not in the other, and
also added a file named DELETED in patchdir, from whom I read removed files and dir,
also added some checkups and output of xdelta-dir to a log (named patcher.log) via
TeeOutPut.pm (search google for that)
xdelta.pl
5.1 KB   Download
Comment 10 by canwilf, Apr 10, 2009
I have made a handy Java translation of the Perl script above that anyone can use in
their Java programs.

It is standalone and only requires the use to have xdelta3.exe in the working
directory or to set the system property xdelta3.

In a DOS batch do this to create a recursive delta of an entire directory:
 
SET xdelta3=somefilelocation (maybe c:\delta.exe)
java XDeltaHelper [-v] delta olddir newdir patchdir

if the user wants a manifest of all the folders and files in the newdir that were not
found in the olddir use -m or --manifest followed by a filename. This must be the
second paramater

SET xdelta3=c:\xdelta3.exe)
java XDeltaHelper [-v] [-m manifest.txt] delta olddir newdir patchdir

Applying a patch is equally easy.

SET xdelta3=c:\xdelta3.exe
java XDeltaHelper [-v] patch patchdir olddir newdir

It is also possible to use this as a convenient wrapper for just a plain old xdelta
of a file

SET xdelta3=c:\xdelta3.exe
java XDeltaHelper [-v] delta oldfile newfile patchfile

or to make a new file from a patch and an old file

SET xdelta3=c:\xdelta3.exe
java XDeltaHelper [-v] patch patchfile oldfile newfile


*** To APPLY A PATCH To AN EXISTING OLD FILE ****
This will create the newfile and then replace the old with the new.

SET xdelta3=c:\xdelta3.exe
java XDeltaHelper --applypatch [-v] patchfile oldfile

Happy Coding

XDeltaHelper.java
16.3 KB   Download
Comment 11 by xmarot, Apr 18, 2009
Hi, I created a utility that creates patch according to two directories... I'm using
JojoDiff but I could easily use yours too. Feel free to contact me if you're
interested at 
xmarot at gmail dot com
Patch Manager.jar
196 KB   Download
Sign in to add a comment

Hosted by Google Code