diff --git a/.githooks/pre-commit b/.githooks/pre-commit
index eec9b36dc16b19e5afbf5b2d0111b265b42b73ac..8dd60c0f510207efb540ab7f73764e90ef7f51d4 100755
--- a/.githooks/pre-commit
+++ b/.githooks/pre-commit
@@ -65,7 +65,7 @@ is_symlink() {
 # available in git tree and checksums are correct.
 check_local_sources() {
 	local apkbuild="$1"
-	local startdir="${apkbuild%/*}"
+	local startdir="$2"
 	local status=0
 	local checksum_act checksum_exp content filename line sources
 
@@ -109,11 +109,21 @@ check_file_size() {
 	fi
 }
 
+cleanup() {
+  [ -f "$_staged" ] && rm "$_staged"
+}
+
+trap cleanup EXIT
 
 for apkbuild in $(changed_files '**/APKBUILD'); do
-	check_local_sources "$apkbuild"
+	_staged="$(mktemp)"
+	git show ":$apkbuild" >"$_staged"
+	check_local_sources "$_staged" "${apkbuild%/*}"
+	cleanup
 done
 
 for path in $(changed_files); do
 	check_file_size "$path"
 done
+
+trap - EXIT