git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* GIT-VERSION-GEN gives "-dirty" when file metadata changed
@ 2008-08-07 19:35 Christian Jaeger
  2008-08-07 15:16 ` [PATCH A] GIT-VERSION-GEN: refresh the index before judging a working dir to be dirty Christian Jaeger
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Christian Jaeger @ 2008-08-07 19:35 UTC (permalink / raw)
  To: git; +Cc: Gerrit Pape

Hello,

Today I've created custom Debian packages from Git for the first time (yes I know there are Debian packages already, I'm doing it so that I can patch Git and still have the convenience of a package system), using the 1.6.0.rc2 checkout, and using my normal procedure to build debian source packages (running "dpkg-buildpackage -uc -us -b -rfakeroot" as non-root user). The resulting binary reported for --version the string "1.6.0.rc2-dirty"; I wondered why, since I didn't have uncommitted changes neither in the working dir nor in the index. I found that the GIT-VERSION-GEN script would check for a clean working directory by checking that "git diff-index --name-only HEAD --" does not report any files, and since this is now running under the control of the fakeroot process, all files had owner 
 and group 0, whereas in reality (when I made the checkout) they had a non-root uid/gid. This made diff-index report all files, and hence give the "-dirty" version.

I'll followup this mail with two variants of a patch which runs "git update-index --refresh" before that check, which solves the issue. Patch A just does it always, patch B does it only if the metadata check failed; I've created the latter with the idea in mind that update-index might be too costly in some situation (here it's fast but I don't know about people without much RAM).

Perhaps not many people are building Git with the help of fakeroot, but I don't see why the patch would hurt either, and it seems to me like it's implementing the correct behaviour (metadata changes could also happen should anyone or some build process move or copy the files to another place before building, or similar). I don't know whether the Debian Git package maintainer had another solution, but maybe his packages are simply being built as root without the help of "fakeroot" (cc to him for information).

Christian.

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2008-08-08  8:56 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-08-07 19:35 GIT-VERSION-GEN gives "-dirty" when file metadata changed Christian Jaeger
2008-08-07 15:16 ` [PATCH A] GIT-VERSION-GEN: refresh the index before judging a working dir to be dirty Christian Jaeger
2008-08-07 17:59 ` [PATCH B] " Christian Jaeger
2008-08-07 21:48 ` GIT-VERSION-GEN gives "-dirty" when file metadata changed Junio C Hamano
2008-08-08  8:55   ` Christian Jaeger

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).