* [PATCH v2] scripts/setlocalversion: fix false positive -dirty tag from ctime
@ 2015-08-14 1:08 Gregory Fong
0 siblings, 0 replies; only message in thread
From: Gregory Fong @ 2015-08-14 1:08 UTC (permalink / raw)
To: Michal Marek; +Cc: linux-kernel, Gregory Fong
git-diff-index cannot detect that a file hasn't actually changed when
the file's ctime has changed (e.g. if chmod was used but didn't
actually result in any changes), which was causing setlocalversion to
incorrectly add a -dirty tag. Run git-update-index beforehand to make
sure that the index is correct.
Test prep:
make defconfig && make prepare
Before, starting from clean index:
$ ls -l Kbuild
-rw-rw-r-- 1 gregory gregory 2622 Aug 10 12:38 Kbuild
$ chmod u+w Kbuild # intentional no-op that updates ctime
$ CONFIG_LOCALVERSION_AUTO=y /bin/sh scripts/setlocalversion $PWD
-00130-g7ddab73-dirty
After, starting from clean index:
$ ls -l Kbuild
-rw-rw-r-- 1 gregory gregory 2622 Aug 10 12:38 Kbuild
$ chmod u+w Kbuild # intentional no-op that updates ctime
$ CONFIG_LOCALVERSION_AUTO=y /bin/sh scripts/setlocalversion $PWD
-00131-gfa3477d
Signed-off-by: Gregory Fong <gregory.0xf0@gmail.com>
---
I sent this a few months ago[1] but didn't really include enough info
about how to reproduce the problem. This is indeed probably a very
unusual issue for someone to have, but sometimes people write braindead
scripts that do things like update ctime for no reason, and it can be
really hard to track down why the kernel build gets marked as '-dirty'
when there aren't any modifications to the tree if you're not intimately
familiar with the difference between git's plumbing and porcelain
commands.
[1] https://lkml.org/lkml/2015/3/10/793
scripts/setlocalversion | 3 +++
1 file changed, 3 insertions(+)
diff --git a/scripts/setlocalversion b/scripts/setlocalversion
index 63d91e2..4ba52fc 100755
--- a/scripts/setlocalversion
+++ b/scripts/setlocalversion
@@ -45,6 +45,9 @@ scm_version()
# Check for git and a git repo.
if test -z "$(git rev-parse --show-cdup 2>/dev/null)" &&
head=`git rev-parse --verify --short HEAD 2>/dev/null`; then
+ # In case ctime has changed but there are not actually any
+ # changes that would be committed.
+ git update-index -q --refresh
# If we are at a tagged commit (like "v2.6.30-rc6"), we ignore
# it, because this version is defined in the top level Makefile.
--
1.9.1
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2015-08-14 1:08 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-08-14 1:08 [PATCH v2] scripts/setlocalversion: fix false positive -dirty tag from ctime Gregory Fong
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®