What is the reason why you want to change the owner of a file in your test? If it is merely to make sure you cannot write to the .git/index file, temporarily doing chmod of the .git directory in a test (with
POSIXPERM prerequisite) may be one way to do so, and you do not need the second user in the system test is running. I want to change the owner of a checked-in file and not the `.git` directory. This is because of what you noted in an earlier message:
As many attributes of each file (like the last modified timestamp and who owns the file) are recorded in the index for files that were verified to be unmodified (this is done so that by doing lstat() on a path and comparing the result with the information saved in the index, we can notice that the path was modified without actually opening the file and looking at the contents), after doing something (like "git diff") that causes this information updated while the files appear to be owned by you
Currently, `git describe --dirty --broken` reports the working tree as dirty if you change the owner of a file. And as Phillip pointed out, calling `git update-index --unmerged -q --refresh` to update the index fixes this. What I want to test looks something like this: # initially, the file is owned by a non-root user chown root file git describe --dirty --broken # incorrectly suffixes the output with '-dirty' As mentioned earlier, the dirty suffix goes away if the index is refreshed before running describe. This is what I really want to assert -- that there is no '-dirty' suffix when owner of a file is changed. This kind of simulates the scenario where `git describe` is run in a docker container as was originally reported by Paul:
mkdir test-container cd test-container cat >Dockerfile <<EOF FROM docker.io/debian:bookworm-slim WORKDIR /work RUN apt-get update && apt-get -y install git EOF podman build -t test-image . mkdir test-repo cd test-repo git init echo "Hello, world" > README git add README git commit -m "Initial commit" README git tag v1.0.0 git describe --tags --dirty --broken podman run -v `pwd`:/work --rm -it --entrypoint '["/usr/bin/git", "describe", "--tags", "--dirty", "--broken"]' test-image
Thanks