From 1fb84a0250902fdf93bb0de335625975bd69734b Mon Sep 17 00:00:00 2001 From: Bert Wesarg Date: Mon, 4 Oct 2010 20:54:57 +0200 Subject: [PATCH] hooks/pre-commit: check .top* files in the to-be-commited tree MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit We currently check fo these files only in the working tree. But we should check what would be commited. We use write-tree to be able to utilize ls-tree and check the result. Signed-off-by: Bert Wesarg Signed-off-by: Uwe Kleine-König --- hooks/pre-commit.sh | 36 +++++++++++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 5 deletions(-) diff --git a/hooks/pre-commit.sh b/hooks/pre-commit.sh index 9d677e9..8ac913f 100644 --- a/hooks/pre-commit.sh +++ b/hooks/pre-commit.sh @@ -29,10 +29,36 @@ else exit 0; fi -# TODO: check the index, not the working copy -[ -s "$root_dir/.topdeps" ] || - die ".topdeps is missing" -[ -s "$root_dir/.topmsg" ] || - die ".topmsg is missing" +check_topfile() +{ + local tree file ls_line type size + tree=$1 + file=$2 + + ls_line="$(git ls-tree --long "$tree" "$file")" || + die "Can't ls tree for $file" + + [ -n "$ls_line" ] || + die "$file is missing" + + # check for type and size + set -- $ls_line + type=$2 + size=$4 + + # check file is of type blob (file) + [ "x$type" = "xblob" ] || + die "$file is not a file" + + # check for positive size + [ "$size" -gt 0 ] || + die "$file has empty size" +} + +tree=$(git write-tree) || + die "Can't write tree" + +check_topfile "$tree" ".topdeps" +check_topfile "$tree" ".topmsg" # TODO: Verify .topdeps for valid branch names and against cycles -- 2.30.2