From e7086db0959d70e51cb04d8821d6b8b13ebf8878 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20Ko=C4=8D=C3=AD?= Date: Sat, 25 Feb 2017 19:30:37 +0100 Subject: Update the way git repositories are handled --- utils/inst | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'utils/inst') diff --git a/utils/inst b/utils/inst index c3c26e2..cb1f658 100644 --- a/utils/inst +++ b/utils/inst @@ -51,12 +51,21 @@ checkdiff() { fi done # Now checkout git repositories - for g in `find "$1" -name .git -type f -printf '%h '`; do + for g in `find "$1" -type d -exec test -e '{}'/.git \; -print -prune`; do G="${g#$1}" - COMMIT=$( cd "$1/$G" && git rev-parse HEAD ) - echo "Checkout of git repository: $2/$G" - # TODO this doesn't seems to work - ( cd "$2/$G" && git --work-tree=. checkout -f "$COMMIT" ) + PREV="$(pwd)" + cd "$2/$G" + # Check if we have any change at all + if git --work-tree=. diff --exit-code -s; then + echo "No difference detected in git: $2/$G" + else + echo "Checkout of git repository: $2/$G" + # Checkout all files to HEAD + git --work-tree=. checkout -f HEAD + # Update all submodules + git --work-tree=. submodule update + fi + cd "$PREV" done else dodiff "$1" "$2" -- cgit v1.2.3