[nycbug-talk] Reversed (or previously applied) patch detected

John Baldwin jhb at freebsd.org
Wed Dec 29 09:04:15 EST 2010


On Tuesday, December 28, 2010 4:35:31 pm Francisco Reyes wrote:
> John Baldwin writes:
> 
> > Try:
> > 
> > cd original; patch -p1 < ../dir.diff
> 
> Thanks. That worked.
> 
> How can one the equivalent of an absolute path?
> For, example I got a patch to a port and I just ran the patch command and it 
> updated the port. I didn't have to change to the port directory.
> 
> Just re-did my little experiment and used the full path to source on the 
> diff, then went into the source dir and ran patch without any parameter 
> other than the patch; it loaded properly. I still don't get why it would not 
> work from ~/tmp if the original diff had the full path (ie tried running 
> patch from ~/tmp and did not work).
> 
> 
> The patch to the port was:
> diff -ruN /usr/ports/databases/skytools/Makefile skytools/Makefile
> --- /usr/ports/databases/skytools/Makefile      2010-12-02 
> 22:55:36.000000000 +0800
> +++ skytools/Makefile   2010-12-26 06:00:36.000000000 +0800
> @@ -6,9 +6,9 @@

I believe it has to do with out patch resolves paths.  In this case it will 
probably look for 1) the full relative path in the '+++' line and then 2) just 
the basename ('Makefile') in the current directory.  I'm not sure if it will 
fall back to the name in the --- line as well, but it might, probably using 
the full path first followed by the basename second.  However, in your 
original patch you had the 'original/' directory in your path name and when 
you cd'd into 'original' neither the full relative path or the simple basename 
matched, so it failed to find a file to apply the patch to.

-- 
John Baldwin



More information about the talk mailing list