Subject: Re: [PATCH 00/14] Add submodule test harness

From: Ramsay Jones <[email-masked]>
Date: Tue, 08 Jul 2014 22:03:56 +0100

On 08/07/14 21:25, Ramsay Jones wrote:
> On 08/07/14 20:34, Jens Lehmann wrote:
>> Am 07.07.2014 21:40, schrieb Torsten Bögershausen:
>>> On 2014-07-07 19.05, Junio C Hamano wrote:
>>>> Jens Lehmann <[email-masked]> writes:
>>>>
>>>>> Junio, do you want me to resend 02/14 without the non-portable "echo -n"
>>>>> or could you just squash the following diff in?
>>>>
>>>> Amended locally here already; thanks, both.
>>>
>>> There seems to be some other trouble under Mac OS, not yet fully tracked down,
>>> (may be related to the "diff -r")
>>
>> Torsten sees failures of this kind under Mac OS:
>>
>> diff -r .git/modules/sub1/config sub1/.git/config
>> 6d5
>> <     worktree = ../../../sub1
>> 8a8
>>>     worktree = ../../../sub1
>>
>> So the config contains the same content, but the worktree setting moved
>> to a different line. This seems to be the result of setting core.worktree
>> in the test_git_directory_is_unchanged function just before the "diff -r",
>> but only under Mac OS.
>>
>>> And Msysgit complains 
>>> error: fchmod on c:/xxxt/trash directory.t7613-merge-submodule/submodule_update_repo/.git/modules/sub1/config.lock failed: Function not implemented
>>
>> I'm not sure what this is about, seems to happen during the "cp -R" of
>> the repo under .git/modules into the submodule.
> 
> I haven't looked into this at all, but from the above message, and
> noting that fchmod() is not implemented in mingw (see compat/mingw.h
> line 91), and the following:
> 
>     $ git grep -n fchmod
>     compat/mingw.h:91:static inline int fchmod(int fildes, mode_t mode)
>     config.c:1639:          if (fchmod(fd, st.st_mode & 07777) < 0) {
>     config.c:1640:                  error("fchmod on %s failed: %s",
>     config.c:1818:  if (fchmod(out_fd, st.st_mode & 07777) < 0) {
>     config.c:1819:          ret = error("fchmod on %s failed: %s",
>     $ 
> 
> [I happen to be on the pu branch at the moment, so YMMV!]
> 
> Both calls to fchmod() above are on config lock files, one
> in git_config_set_multivar_in_file() and the other in
> git_config_rename_section_in_file().
> 

See commit daa22c6f8 ("config: preserve config file permissions
on edits", 06-05-2014).

ATB,
Ramsay Jones