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

From: Ramsay Jones <[email-masked]>
Date: Tue, 08 Jul 2014 21:25:39 +0100

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().

ATB,
Ramsay Jones