Subject: Re: AIX failures on parallel checkout (new in v2.32.0-rc*)

From: Junio C Hamano <[email-masked]>
Date: Thu, 27 May 2021 08:00:44 +0900

Matheus Tavares Bernardino <[email-masked]> writes:

> Hi, Ævar
>
> On Wed, May 26, 2021 at 3:40 PM Ævar Arnfjörð Bjarmason
> <[email-masked]> wrote:
>>
>>     + test_checkout_workers 0 git -C various_sequential checkout --recurse-submodules B2
>>     error: Your local changes to the following files would be overwritten by checkout:
>>             d
>>             h
>>             j
>>     Please commit your changes or stash them before you switch branches.
>>     Aborting
>
> I requested an account on the GCC farm to debug this, and the problem
> seems to be that AIX's `cp -R` defaults to following symlinks instead
> of copying them. In the above error message, 'd', 'h' and 'j' are all
> symlinks which were followed when copying the test repo, so these
> paths indeed won't match what's in the index, which makes checkout
> abort.
>
> Fortunately, there is a POSIX option to force cp to copy the symlinks:
> '-P'. Adding this flag to the cp invocation at line 117 of t2080 makes
> all parallel checkout tests pass on AIX.
>
> We also already use `cp -R -P` in the test suite (at t7001), and
> without any prereq, so I guess all platforms we are testing git at do
> support this flag in cp. I'll send a patch adding the flag at t2080.

Thanks for a quick analysis.  Very much appreciated.

00764ca1 (test: fix t7001 cp to use POSIX options, 2014-04-11) only
mentions that "-R -P -p" is used now in place of "-a" that we used
to use (the latter of which is not POSIX).  Please highlight why we
want -P in the log message (i.e. we want to copy the link in these
tests because ...) for the fixing commit.

Thanks.