From fd618866160f4c28bd273f5a308ba2845d5db4a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=90o=C3=A0n=20Tr=E1=BA=A7n=20C=C3=B4ng=20Danh?= Date: Mon, 20 Apr 2020 23:18:14 +0700 Subject: [PATCH] setup/git.sh: prefer git plumbing command MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-ls-files(1) is plumbing command, its output will never change regardless of configuration, version. git-status(1) output will be changed depends on configuration. At least, 986d4dbc7d (common/environment/setup/git.sh: ensure untracked files are checked., 2017-11-24) was added to address a different output on `status.showUntrackedFiles`. By doing this, also reduce a pipe, and a fork-exec. Technically, git-log(1) is also a porcelain, but I _think_ `%ct` is stable enough to stay there. If the day has come, that `git-log(1)` can be replaced with: git cat-file commit HEAD | sed -ne '/^committer/{s/.* \([0-9]*\) [-+][0-9][0-9][0-9][0-9]$/\1/p;q}' --- common/environment/setup/git.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/environment/setup/git.sh b/common/environment/setup/git.sh index a2f7f0a28ee..a7395ef53f3 100644 --- a/common/environment/setup/git.sh +++ b/common/environment/setup/git.sh @@ -9,7 +9,7 @@ if [ -n "$XBPS_USE_BUILD_MTIME" ]; then unset SOURCE_DATE_EPOCH elif [ -z "${SOURCE_DATE_EPOCH}" -a -n "$IN_CHROOT" ]; then # check if the template is under version control: - if $XBPS_GIT_CMD -C ${XBPS_SRCPKGDIR}/${basepkg} status -u normal --porcelain template | grep "^?? " &> /dev/null; then + if [ -z "$($XBPS_GIT_CMD -C ${XBPS_SRCPKGDIR}/${basepkg} ls-files template)" ]; then export SOURCE_DATE_EPOCH="$(stat -c %Y ${XBPS_SRCPKGDIR}/${basepkg}/template)" else export SOURCE_DATE_EPOCH="$($XBPS_GIT_CMD -C ${XBPS_DISTDIR} log --pretty='%ct' -n1 HEAD)"