Re: [PATCH] describe: refresh the index when 'broken' flag is used

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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





[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux