Skip to content

Commit 6147b1c

Browse files
Genki Skymasahir0y
authored andcommitted
scripts/setlocalversion: git: Make -dirty check more robust
$(git diff-index) relies on the index being refreshed. This refreshing of the index used to happen, but was removed in cdf2bc6 ("scripts/setlocalversion on write-protected source tree", 2013-06-14) due to issues with a read-only filesystem. If the index is not refreshed, one runs into problems. E.g. as described in [0], git stores the uid in its index, so even if just the uid has changed (or git is tricked into thinking so), then we will think the tree is dirty. So as in [1], if you package linux-git with a system that uses fakeroot(1), you get a "-dirty" version. Unless you manually $(git update-index --refresh) themselves. The simplest solution seems to be $(git status --porcelain), with an additional flag saying "ignore untracked files". It seems clearer about what it does, and avoids issues regarding cached indexes and writable filesystems, but still has stable output for scripting. [0]: https://public-inbox.org/git/0190ae30-b6c8-2a8b-b1fb-fd9d84e6dfdf@oracle.com/ [1]: https://bbs.archlinux.org/viewtopic.php?id=236702 Signed-off-by: Genki Sky <sky@genki.is> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
1 parent 5b394b2 commit 6147b1c

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

scripts/setlocalversion

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ scm_version()
7474
fi
7575

7676
# Check for uncommitted changes
77-
if git diff-index --name-only HEAD | grep -qv "^scripts/package"; then
77+
if git status -uno --porcelain | grep -qv '^.. scripts/package'; then
7878
printf '%s' -dirty
7979
fi
8080

0 commit comments

Comments
 (0)