Re: GNU Patch version?



Vincent Legoll <vincent.legoll <at> gmail.com> writes:

> 
> On Tue, Jul 15, 2008 at 3:26 PM, Edwin Vane <revane <at> gmail.com> wrote:
> > Hi,
> >
> > Using meld today I came across an error dialogue unexpectedly that read:
> >
> > Invoking patch failed, you need GNU patch.
> > 'patch --strip=0 --reverse --directory=/tmp/tmpfsGU0V-meld'
> >
> > I have GNU patch 2.5.9 installed (the most current available to Ubuntu
> > Gutsy). I can't immediately see anything weird about this file but I
> > can look into it later if you guys don't have something obvious to
> > suggest right now. Run from the command-line I get this Traceback:
> 
> Could you give us more détails on what you were doing ?
> I assume you were in a source controlled directory, looking
> at files that differ from the committed ones.
> 
> It would help if you'll describe very precise steps to reproduce
> the bug. And if you could attach the 2 versions of the file you're
> trying to diff, etc...
> 

I had this same problem and was able to track down the failure but am still 
looking at how to fix it.  The error dialogue happens on any file which fails 
when a patch is applied.  Patch fails whenever a diff is within 3 lines(normal 
diff context) of a SVN expanded keyword.  The happens because the patch file 
is generated from svn diff(which does not expand the keywords) but in 
vcview.show_patch the shutil.copyfile call copies the file from the tree and 
this contains all of the subversion keywords expanded.  When patch goes to 
apply the patch file it will fail because the patch looks like this:

Index: Makefile
===================================================================
--- Makefile    (revision 973)
+++ Makefile    (working copy)
@@ -1,4 +1,4 @@
-#
+#
 # $Id$
 #
 # The following creates/sets a few fundamental shell variables for us

But the actual file looks like this:

#
# $Id: Makefile 942 2008-10-17 18:55:48Z fubar $
#
# The following creates/sets a few fundamental shell variables for us

Therefore, patch cannot figure out how to apply the patch because the diff 
file does not match the real file because in the diff the $Id$ keyword has not 
been expanded and in the copied file it has already been expanded by 
subversion.




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]