Re: GIT-VERSION-GEN gives "-dirty" when file metadata changed

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

 



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

[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