Junio C Hamano wrote:
Christian Jaeger <christian@xxxxxxxxxxxxxx> writes:
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),
I personally think that _you_ are responsible for doing the refresh
yourself after becoming root, if you checkout as yourself and then build
as root (or use fakeroot to build as if it is built as root).
By the way "man fakeroot" says...
-u, --unknown-is-real
Use the real ownership of files previously unknown to fakeroot
instead of pretending they are owned by root:root.
which sounds like a sensible thing to do (I would even imagine that would
be a sensible default for fakeroot in general), and I would imagine that
would help.
That's true, running "dpkg-buildpackage -uc -us -b -r'fakeroot -u'"
makes the dirty bit go away.
Although my guess is that most users who haven't read this thread will
run into the same issue until they understand the reason after some half
or full hour of debugging or so.
Also I don't see why I should keep in mind to run the refresh
explicitely if any changes happened (are there any users who are using
Git to report metadata changes to them (occasionally) which aren't
changes that would be stored in Git when running commit?).
Not that an extra update-index --refresh would be a huge performance hit,
but I hesitate to take a patch that adds something that should
conceptually be unnecessary.
Isn't conceptually of interest whether the *contents* of the files have
changed (or a metadata piece that matters to Git)? As mentioned, even
just moving the sources to another partition using "mv" after checkout
but before running "make" will give a binary that is "dirty", and the
user might be confused and led into wrong conclusions or needless
investigations.
I realize that also some git porcellain does not fall back to checking
the contents, for example the current gitk will report the working dir
as having "local uncommitted changes" (which in fact did confuse me when
it happened to me, IIRC because of "mv"-ing a checkout, and left a
feeling of slight brokenness). Still at the more relevant places like
"git commit" there will of course be the content check.
I personally think it would be cleaner to always only report changes if
really changes which can be stored in Git have happened. Not only in
GIT-VERSION-GEN but also in gitk and maybe some other places. Isn't the
metadata checking only used as a performance optimization? It would be
sensible to report changes if metadata has changed that is actually
being stored in Git, i.e. the exec bit, of course (and then no content
check would be necessary).
Christian.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html