As there is no compelling reason not to allow libprojfs callers
to specify the permission mode bits of a projected directory,
we can support this in our API, and defer to our callers (VFSForGit
in particular) to supply the directory permissions they expect or
require.
Update submodule to build against commit
dcb0fd5ace90a807e4067da943a4a48303e07937 in github/VFSForGit, as
this removes the dependency on ConvertDirectoryToVirtualizationRoot()
from the VFSForGit code.
We prune a bit of our CI log output by asking .NET Core not to output
its welcome messages or download documentation, and we also avoid its
sending telemetry.
When our CI builds fail, we can output the full set of individual
test logs and exit statuses, including shell command traces, if we
pass the --verbose-log and -x flags to our test suite.
Because we need to run our test suite on a filesystem which supports user
extended attributes, and since our /data/* build directories may not suffice
as they are bind-mounted to external filesystems like APFS, we want to
use /tmp for our test mounts, as per commits e73f011a10 and 7696e9c681.
In our Debian-based Docker images the /tmp directory is just a normal one
under the root, which is mounted using overlayfs on top of the Linux host's
filesystem, and in most virtualization contexts (e.g., Docker for Mac,
Azure Pipelines, VMware, etc.) that will be ext4, where user xattrs
are supported by default.
We can direct the test suite to use /tmp for its test mount locations
by passing the --root=/tmp parameter via the PROJFS_TEST_OPTS environment
variable. We do this for "make clean" as well as "make test" to ensure
that our cleanup job properly deletes the /tmp/test-mounts directory.
When we start to pass command line arguments containing space
characters (or quotes or other special characters), formatting
our log output allows us to distinguish these from spaces between
arguments in our CI Bash command lines.