From: Christian Jaeger <christian@jaeger.mine.nu>
To: Junio C Hamano <gitster@pobox.com>
Cc: git@vger.kernel.org, Gerrit Pape <pape@smarden.org>
Subject: Re: GIT-VERSION-GEN gives "-dirty" when file metadata changed
Date: Fri, 08 Aug 2008 10:55:50 +0200 [thread overview]
Message-ID: <489C0A16.4040403@jaeger.mine.nu> (raw)
In-Reply-To: <7vd4kkijjd.fsf@gitster.siamese.dyndns.org>
Junio C Hamano wrote:
> Christian Jaeger <christian@jaeger.mine.nu> 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.
prev parent reply other threads:[~2008-08-08 8:56 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
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 message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=489C0A16.4040403@jaeger.mine.nu \
--to=christian@jaeger.mine.nu \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=pape@smarden.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).