Re: quiltimport mode detection oddity
On Thu, 1 Aug 2024 23:51:21 -0400 Jeff King <peff@peff.net> wrote:
Show 38 quoted lines
> On Thu, Aug 01, 2024 at 06:07:06PM -0700, Andrew Morton wrote:
>
> > > So, the patch removes autoconf.h file from that directory. The
> > > "extended header" part between "diff --git" and "--- a/..." has
> > > "deleted file mode 100664" and that is where the warning comes.
> >
> > yup yup. The patch says "remove this file which has mode 100664".
> >
> > The file has mode 100664.
> >
> > quiltimport says it had mode 100644. Incorrectly, I suggest.
>
> It's definitely a weird case. Git does not record full modes, but just
> cares about the execute bit. So it normalizes modes for regular files to
> 100644 or 100755. You can see that with a simple example:
>
> git init
> echo foo >file
> chmod 664 file
> git add file
> git commit -m 'add file'
>
> git ls-files -s
>
> cat >patch <<\EOF
> diff --git a/file b/file
> deleted file mode 100664
> --- a/file
> +++ /dev/null
> @@ -1 +0,0 @@
> -foo
> EOF
> ls -l file
> git apply patch
>
> Even though the filesystem has 100664, the index records 100644 (which
> you can see from the "ls-files" output). And then when we apply the
> patch, we get the "file has type 100644, expected 100664" message.
> AFAICT, it has been that way forever (I tried as far back as git 1.6.6).
> So this is nothing new, and I don't think Git would ever produce a patch
> that said "file mode 100664" itself (I'm assuming in your case the patch
> is coming from quilt).
> Alternatively (or maybe in addition), I wonder if quilt should similarly
> canonicalize the mode.
> generated elsewhere, but normal patches don't have modes in them at all.
> The "deleted file mode" line is git-ism, so here we have something which
> is implementing the git line in a (slightly) incompatible way.