David Michael <fedora.dm0@xxxxxxxxx> writes: > This is my most recent attempt at solving the problem of z/OS using > different file type values than every other OS. I believe it should be > safe as long as the file type bits don't ever need to be converted back > to their native values (and I didn't see any instances of that). > > I've been testing it by making commits to the same repositories on > different operating systems and pushing those changes around, and so far > there have been no issues. > > Can anyone foresee any problems with this method? I cannot offhand comment on the last question above, but the reliance on exact S_IFxxx bit assignment was identified as a potential problem from very early days of Git that we have known about but didn't have need to address on any system that mattered. This is a long overdue issue and I am happy to see it getting tackled. The patch seems to be a sensible implementation of your design decision to use the one-way conversion. > diff --git a/compat/stat.c b/compat/stat.c > new file mode 100644 > index 0000000..0ff1f2f > --- /dev/null > +++ b/compat/stat.c > @@ -0,0 +1,49 @@ > +#define _POSIX_SOURCE > +#include <stddef.h> /* NULL */ > +#include <sys/stat.h> /* *stat, S_IS* */ > +#include <sys/types.h> /* mode_t */ > + > +static inline mode_t mode_native_to_git(mode_t native_mode) > +{ > + if (S_ISREG(native_mode)) > + return 0100000 | (native_mode & 07777); > + else if (S_ISDIR(native_mode)) > + return 0040000 | (native_mode & 07777); > + else if (S_ISLNK(native_mode)) > + return 0120000 | (native_mode & 07777); > + else if (S_ISBLK(native_mode)) > + return 0060000 | (native_mode & 07777); > + else if (S_ISCHR(native_mode)) > + return 0020000 | (native_mode & 07777); > + else if (S_ISFIFO(native_mode)) > + return 0010000 | (native_mode & 07777); > + else /* Non-standard type bits were given. */ > + return native_mode & 07777; > +} -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html